C# VisualStateManager.gostate不';无法使用数据模板

C# VisualStateManager.gostate不';无法使用数据模板,c#,xaml,blend,visualstatemanager,visualstates,C#,Xaml,Blend,Visualstatemanager,Visualstates,我有一个列表框,下面的DataTemplate设置为ItemTemplate,我想使用Codebehind更改它的VisualState 数据模板: <DataTemplate x:Key="SortedRecommendationTemplate"> <Border x:Name="asds"> <VisualStateManager.VisualStateGroups> <VisualStateGrou

我有一个列表框,下面的
DataTemplate
设置为
ItemTemplate
,我想使用Codebehind更改它的
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>

...
...
...

这是因为
边框
不是
控件
,而是
框架元素
<代码>VisualStateManager.gostate(控件控件、字符串stateName、bool-usetransforts)
但是仅适用于
控件


您可以使用Microsoft.Expression.Interactivity.Core中的
ExtendedVisualStateManager.GoToElementState(FrameworkElement根、字符串stateName、bool-UseTransforts)
。我猜这是Blend内部使用的。

这是因为
边框
不是
控件
,而是
框架元素
<代码>VisualStateManager.gostate(控件控件、字符串stateName、bool-usetransforts)但是仅适用于
控件

您可以使用Microsoft.Expression.Interactivity.Core中的
ExtendedVisualStateManager.GoToElementState(FrameworkElement根、字符串stateName、bool-UseTransforts)
。我想这是Blend内部使用的

var blub = FindChild<Border>(listBox, "asds");
VisualStateManager.GoToState(blub, "AllInfoState", true);
<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>