2

次のようにDataTemplate設定されたリストボックスがあり、コードビハインドを使用ItemTemplateして変更したいと考えてVisualStateいます。

データ テンプレート:

<DataTemplate x:Key="SortedRecommendationTemplate">
    <Border x:Name="asds">
        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="VisualStateGroup">
                <VisualState x:Name="OnlyNameState">
                    <Storyboard>
                        ...
                    </Storyboard>
                </VisualState>
                <VisualState x:Name="OnlyImageState"/>
                <VisualState x:Name="AllInfoState">
                    <Storyboard>
                        ...
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
        <Grid>
            ...
        </Grid
    </Border>
</DataTemplate>

これは、ボーダーを取得するために使用しているコードです (FindChild はHow to find element in visual tree? wp7からのものです) VisualState を変更します

var blub = FindChild<Border>(listBox, "asds");
VisualStateManager.GoToState(blub, "AllInfoState", true);

ただし、GoToStates は false を返します。そして、ブラブは本当に私が望む境界線です (まあ、それは最初の Listboxitem です) しかし、Blend のビヘイビアを使用すると実際に変化するため、VisualStates は機能しているようです:

トリガー:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseEnter">
        <ei:GoToStateAction StateName="AllInfoState" TargetObject="{Binding ElementName=asds}"/>
    </i:EventTrigger>
    <i:EventTrigger EventName="MouseLeave">
        <ei:GoToStateAction StateName="OnlyNameState" TargetObject="{Binding ElementName=asds}"/>
    </i:EventTrigger>

誰かが何が起こっているのか知っていますか?前もって感謝します!

4

1 に答える 1