我有一个带有列数据模板的网格,我想根据其标题中的复选框勾选来应用(或不应用)。
无法弄清楚如何处理这个问题。某处会有启用标志吗?
<dxg:GridControl>
<dxg:GridControl.Columns>
<dxg:GridColumn>
<dxg:GridColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Name="StatusCheck" Content="Status" />
</DataTemplate>
</dxg:GridColumn.HeaderTemplate>
<dxg:GridColumn.CellTemplate>
<DataTemplate>
...
</DataTemplate>
</dxg:GridColumn.CellTemplate>
提前谢谢!
答案 0 :(得分:2)
您似乎正在使用第三方控件(dxg:...
)。因此,您必须查看它的文档才能确定。
大多数模板化控件的数据模板都有TemplateSelector
属性,您可以在其中传递DataTemplateSelector。
如果不是这种情况,您仍然可以将自定义控件放入标题中,根据您的数据更改其可视化效果。
第三个选项是,根据您的数据设置复选框可见性。
答案 1 :(得分:0)
Kai的回答似乎很好。但是添加我所做的以及我已经实现的不同。
我们的想法是在VM中创建一个属性,绑定到该复选框并将其与模板挂钩。诀窍是,要把它挂在网格中,我不得不看一个“祖先”&#39;通过包含该属性的MyControl
,<dxg:GridControl.Columns>
<dxg:GridColumn>
<dxg:GridColumn.HeaderTemplate>
<DataTemplate>
<CheckBox x:Name="StatusCheck" IsChecked="{Binding Path=ShowStatusIcon, ElementName=MyControl}" Content="Show icon"/>
</DataTemplate>
</dxg:GridColumn.HeaderTemplate>
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<DataTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition ... /> <!-- Other condition that I need -->
<Condition Binding="{Binding Path=DataContext.ShowStatusIcon, ElementName=MyControl}" Value="True" />
<Condition ... /> <!-- Other condition that I needed for the template to be applied -->
</MultiDataTrigger.Conditions>
<Setter ... /> <!-- Fall back if condition not met, ie. other data template -->
</MultiDataTrigger>
:
ScriptEngine's