是否即时应用DataTemplate

时间:2016-05-18 01:08:48

标签: c# xaml datatemplate gridcontrol

我有一个带有列数据模板的网格,我想根据其标题中的复选框勾选来应用(或不应用)。

无法弄清楚如何处理这个问题。某处会有启用标志吗?

<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>

提前谢谢!

2 个答案:

答案 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