Silverlight 在DataGridTemplateColumn中使用EventTriggers
我使用的是Silverlight 5,在视图中,我有一个按钮,当单击该按钮时,会加载特定的状态。这是使用EventTrigger和GoToStateAction标记完成的,如下所示:Silverlight 在DataGridTemplateColumn中使用EventTriggers,silverlight,datagridtemplatecolumn,Silverlight,Datagridtemplatecolumn,我使用的是Silverlight 5,在视图中,我有一个按钮,当单击该按钮时,会加载特定的状态。这是使用EventTrigger和GoToStateAction标记完成的,如下所示: <Button x:Name="..." Content="..."> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <ei:GoToStateActi
<Button x:Name="..." Content="...">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:GoToStateAction StateName="MyState"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
上面的操作非常顺利,但是如果我将按钮移动到DataGridTemplateColumn中,它将不再工作。具体来说,应用程序编译时不会出错,DataGrid会在列中显示按钮,但当我单击按钮时,状态不会转换为
<data:DataGrid ...>
<data:DataGrid.Columns>
<data:DataGridTemplateColumn>
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="..." Content="...">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:GoToStateAction StateName="MyState"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
DataGridTemplateColumn中不可能有EventTriggers吗?或者我需要使用其他语法声明它们吗
感谢引用声明,如果未指定目标,它将在可视化树上遍历,并在找到的第一个定义状态的元素上应用状态更改。在第二种情况下,我相信DataGrid可视树的某些元素(单元格、行等)可能会在用户控件之前被考虑在内,因此您看到的行为就是这样
由于您使用的是Silverlight 5,因此可以尝试使用具有UserControl类型祖先外观的绑定将操作的属性设置为所需的控件
<ei:GoToStateAction StateName="MyState" TargetObject="{Binding RelativeSource={RelativeSource AncestorType=UserControl}}"/>