我有WPF DataGrid,我正在显示一些数据。如果他/她检查标题中的复选框,我需要为用户提供编辑数据的选项。这是我所做的WPF部分。
<DataGrid.Columns>
<DataGridTextColumn Header="MaxLength" Binding="{Binding MaxLength}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<CheckBox x:Name="AAOverride" Content="Increase Max Length" />
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>
我想根据用户选择启用/禁用MaxLength列。我正在关注MVVM,所以我没有代码隐藏选项:(
答案 0 :(得分:0)
只需使用RelativeSource绑定即可访问根视图模型。我想这样的事情(也需要一个IValueConverter否定bool的“增加最大长度” - &gt;“只读”):
<DataGrid.Columns>
<DataGridTextColumn Header="MaxLength" Binding="{Binding MaxLength}"
IsReadOnly="{Binding
RelativeSource={RelativeSource AncestorType=DataGrid},
Path=DataContext.IsMaxLengthEnabled,
Converter={StaticResource NegateBool}}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<CheckBox x:Name="AAOverride" Content="Increase Max Length"
IsChecked="{Binding RelativeSource={RelativeSource AncestorType=DataGrid},
Path=DataContext.IsMaxLengthEnabled,
Mode=TwoWay}"
/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
</DataGrid.Columns>