Если я создаю привязку к IsReadOnly
свойство DataGridTextColumn
, это не реализовывает. Если я установил его через разметку, это работает.
IsReferenceInactive
свойство является DP и хорошо работает (Для тестирования, я связал его с флажком, который работал),
Действительно ли это - известное ограничение?
Обновление
Uups, кроме я записал, в окне вывода существует сообщение:
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=IsReferenceInactive; DataItem=null; target element is 'DataGridTextColumn' (HashCode=23836176); target property is 'IsReadOnly' (type 'Boolean')
Кажется, этот:
DataGridColumn
ы не являются частью визуального дерева и не участвуют в подобном связывании. Я обхожу эту проблему, используя DataGridTemplateColumn
.
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=myProperty}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox IsEnabled="{Binding Path=myBool}" Text="{Binding Path=myProperty, Mode=TwoWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Есть и другие обходные пути, которые мне показались слишком хакерскими, но они работают; а именно: http://blogs.msdn.com/b/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx