如果DataGrid列是WPF中的制表位,则进行绑定
本文关键字:绑定 列是 DataGrid WPF 如果 | 更新日期: 2023-09-27 18:27:23
我有一个DataGridTextColumn,它有时需要成为制表符,有时不需要成为制表符号。
我有
<DataGridTextColumn x:Name="SomeColumn">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="KeyboardNavigation.IsTabStop" Value="False" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
这可以很好地防止列被选项卡切换到.
我想做一些类似的事情
<Setter Property="KeyboardNavigation.IsTabStop" Value="{Binding IsSomeColumnTabStop}" />
其中IsSomeColumnTabStop
是DataGrid
的DataContext
中的布尔值。不幸地这行不通!
我也试过
<Setter Property="KeyboardNavigation.IsTabStop" Value="{Binding DataContext.IsSomeColumnTabStop}" />
但是运气不好!
我最终在代码背后做了这件事,感觉很肮脏。。。如果有人能给我指明正确的方向,绑定肯定是首选!
在我的DataGrid
的Resources
中,我定义了
<Style x:Key="TabStopColumn" TargetType="DataGridCell">
<Setter Property="KeyboardNavigation.IsTabStop" Value="True"/>
</Style>
<Style x:Key="NoTabStopColumn" TargetType="DataGridCell">
<Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
</Style>
然后当我想停止制表时,我可以做…
SomeColumn.CellStyle = (Style)MyDataGrid.Resources["TabStopColumn"];
没有制表位。。。
SomeColumn.CellStyle = (Style)MyDataGrid.Resources["NoTabStopColumn"];