Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从ViewModel更改datagrid中的VisualState_C#_Wpf_Xaml_Datagrid_Visualstatemanager - Fatal编程技术网

C# 如何从ViewModel更改datagrid中的VisualState

C# 如何从ViewModel更改datagrid中的VisualState,c#,wpf,xaml,datagrid,visualstatemanager,C#,Wpf,Xaml,Datagrid,Visualstatemanager,我的ViewModel中有一个集合,每个项目都具有特定的状态,基于此,我希望显示特定的控件,并且当状态更改时,我希望为转换应用动画 我使用DataGrid显示视图中的项目,其中一列应该显示项目的状态 我所做的是用VisualState组定义了一种样式(如果我在另一个控件上使用if,这很好,但我必须在代码后面编写GoState) 然后我在我的数据网格中使用 <DataGrid ItemsSource="{Binding DataItems}" AutoGenerateColumns="Fal

我的ViewModel中有一个集合,每个项目都具有特定的状态,基于此,我希望显示特定的控件,并且当状态更改时,我希望为转换应用动画

我使用DataGrid显示视图中的项目,其中一列应该显示项目的状态

我所做的是用VisualState组定义了一种样式(如果我在另一个控件上使用if,这很好,但我必须在代码后面编写GoState)

然后我在我的数据网格中使用

<DataGrid ItemsSource="{Binding DataItems}" AutoGenerateColumns="False">
<DataGrid.Columns>
    <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
    <DataGridTemplateColumn Header="Item state">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ToggleButton DataContext="{Binding Item}"
                            x:Name="btnState"
                            Style="{StaticResource MyVisualStateStyle}">
                    <i:Interaction.Triggers>
                        <ei:DataTrigger Binding="{Binding ItemState}" Value="State1">
                            <ei:GoToStateAction StateName="State1"/>
                        </ei:DataTrigger>
                        <ei:DataTrigger Binding="{Binding ItemState}" Value="State2">
                            <ei:ChangePropertyAction PropertyName="Background" Value="#FF000000" TargetName="btnState" />
                            <ei:GoToStateAction StateName="State2"/>
                        </ei:DataTrigger>
                        <ei:DataTrigger Binding="{Binding ItemState}" Value="State3">
                            <ei:ChangePropertyAction PropertyName="Background" Value="#FFFFFFFF" TargetName="btnState" />
                            <ei:GoToStateAction StateName="State2"/>
                        </ei:DataTrigger>
                    </i:Interaction.Triggers>
                </ToggleButton>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>

我添加了backgroupd的更改,以查看它是否有效,但也不起作用。我检查了输出是否有任何绑定错误,但没有绑定错误

这是正确的实施方式吗

有什么建议吗

编辑


我为ToggleButton创建了一个用户控件,该控件的状态为dependency属性,并在代码隐藏中更改该属性时创建了可视状态状态:(

我创建了一个用户控件,该控件的样式中包含visualstategroups,向该控件添加了一个依赖项属性,并且在更改该依赖项属性时更改了代码隐藏中的视觉状态