如果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}" />

其中IsSomeColumnTabStopDataGridDataContext中的布尔值。不幸地这行不通!

我也试过

<Setter Property="KeyboardNavigation.IsTabStop" Value="{Binding DataContext.IsSomeColumnTabStop}" />

但是运气不好!

如果DataGrid列是WPF中的制表位,则进行绑定

我最终在代码背后做了这件事,感觉很肮脏。。。如果有人能给我指明正确的方向,绑定肯定是首选!

在我的DataGridResources中,我定义了

<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"];