次のように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>
誰かが何が起こっているのか知っていますか?前もって感謝します!