2016-05-18 54 views
0

我有一个带有列数据模板的网格,我想基于其标题中的复选框打勾应用(或不应用)。实时应用DataTemplate

不知道如何处理这个。会不会有一个启用标志?

<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

看起来好像你正在使用第三方控件(dxg:...)。因此,您必须查看它的文档以确保。

大多数模板化控件对于其数据模板都有TemplateSelector属性,您可以在其中通过DataTemplateSelector

如果不是这种情况,您仍然可以将自定义控件放入标题中,这会根据您的数据更改其可视化。

第三种方法是,根据您的数据设置复选框的可见性。

0

Kai的答案似乎是很好的答案。但添加我所做的以及我已经实施的不同。

这个想法是在虚拟机中创建一个属性,绑定到复选框并将其与模板挂钩。诀窍是要把它挂在网格中,我必须看看通过ElementName将包含属性的“始祖”,这里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>