2016-05-18 5 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

Ответ от Кая кажется хорошим. Но добавив, что я сделал, а также я уже реализовал по-другому.

Идея заключалась в том, чтобы создать свойство в VM, связанное с флажком и связать его с шаблоном. Хитрость в том, что подключить его в сетке, я должен был смотреть на «предка» через 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>