我如何使用DatagridTextColumn.ElementStyle使DatagridTextColumn只读?

时间:2012-08-01 08:51:24

标签: wpf wpfdatagrid datagridtextcolumn

我可以使用elementStyle将DatagridTextColumn IsReadOnly绑定到ViewModel内的Property(此处为IsReadOnlyProperty)吗? 像这样的东西:

  <DataGridTextColumn.ElementStyle>
      <Style TargetType="{x:Type TextBlock}">
          <Setter Property="IsEnabled" Value="{Binding IsReadOnlyProperty}"/>
      </Style>
  </DataGridTextColumn.ElementStyle>
  <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="{x:Type TextBlock}">
               <Setter Property="IsEnabled" Value="{Binding IsReadOnlyProperty}" />
        </Style>
  </DataGridTextColumn.EditingElementStyle>

1 个答案:

答案 0 :(得分:1)

试试这个:

<DataGridTextColumn IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.IsReadOnlyProperty}" />

创建DataGrid时,可以通过分配ItemsSource来设置其DataContext。这会将DataGrid中的所有控件限制为仅使用其父DataContext中的对象,因此如果要从此DataContext外部绑定到属性,则必须明确声明要更改范围。