2013-06-18 5 views
6

Я бы хотел, чтобы столбец флажка в моем datagrid включен/отключен для каждой строки в зависимости от значения в коллекции. У меня есть ObservableCollection, называемый AccountComponents, который является коллекцией класса AccountComponent, который имеет логическое свойство Enabled. Я пробовал привязать свойство Enabled к IsReadOnly и IsEnabled без везения.DataGridCheckBoxColumn IsReadOnly привязка свойств

Вот XAML, где я попробовал DataGridCheckBoxColumn-

<DataGridCheckBoxColumn Binding="{Binding IsChecked}" IsReadOnly="{Binding AccountComponents/Enabled}"/> 

Вот XAML, где я попробовал DataGridTemplateColumn-

<DataGridTemplateColumn Header=""> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Grid> 
           <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" IsEnabled="False"/> 
          </Grid> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
        <DataGridTemplateColumn.CellEditingTemplate> 
         <DataTemplate> 
          <Grid> 
           <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" IsEnabled="{Binding Enabled}"/> 
          </Grid> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellEditingTemplate> 
       </DataGridTemplateColumn> 

Любая помощь выяснить это будет высоко ценится.

+0

Какие сообщения вы получаете из окна вывода? –

+0

То же самое для * любого * свойства на * любом * типе столбца. Задайте свою проблему, найдите, найдите решение. –

ответ

5

Во-первых, нет необходимости указывать CellEditingTemplate при использовании CheckBoxes. CheckBoxes сами являются «редактируемыми/проверяемыми». Поэтому удалите это CellEditingTemplate, так как это не имеет смысла.

Вы пытались связать IsEnabled свойство CheckBox непосредственно к вашей Enabled собственности вашего AccountComponent в CellTemplate (как вы делали это в CellEditingTemplate)? Это должно решить вашу проблему.

<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <Grid> 
      <CheckBox IsChecked="{Binding IsChecked,Mode=TwoWay}" 
         IsEnabled="{Binding Enabled}"/> 
     </Grid> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 
+1

Спасибо Маркус, который сработал. Можете ли вы сказать мне, почему привязка к свойству IsReadOnly в DataGridCheckBoxColumn не работает? –

+0

Я не тестировал его, но ваше Binding-Expression с «AccountComponents/Enabled» выглядит подозрительно. Обычно это используется для сценариев Master/Detail, где в этом случае у вас уже есть ваши детали. Моя первая попытка была бы IsReadOnly = "{Binding Enabled}" – Markus

+0

Я думал, что это выглядит странно, но это синтаксис VS, созданный, когда я выбрал Enabled из всплывающего окна привязки данных. Я попробовал ваше предложение, но это не сработало. Наверное, я буду придерживаться таблицы данных. Спасибо за вашу помощь. –