【问题标题】:C# WPF Datagrid how to disable selection cell on specific columnC# WPF Datagrid 如何禁用特定列上的选择单元格
【发布时间】:2017-11-29 03:35:21
【问题描述】:

全新的 SO 和全新的 WPF 数据网格。

我一直在搜索有关 Datagrid 的所有已打开线程,但找不到任何问题的答案。

我正在尝试将数据显示到数据网格中。到目前为止,一切都很好。 我试图让用户选择数据网格中的单元格。到目前为止,一切都很好。 我想禁用特定列上的选择单元格。

查看链接中的图片。

如何禁用扭矩列或平均列上的选择单元格,让用户只选择列上的单元格Mes1Mes2Mes3

【问题讨论】:

    标签: c# wpf xaml datagrid selection


    【解决方案1】:

    如果您想阻止某些列中的单元格被选中,您可以使用DataGridCell 样式将这些单元格的IsHitTestVisible 属性设置为true

    <DataGrid x:Name="dataGrid1">
        <DataGrid.Resources>
            <Style TargetType="{x:Type DataGridCell}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Torque">
                        <Setter Property="IsHitTestVisible" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Average">
                        <Setter Property="IsHitTestVisible" Value="False"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.Resources>
    </DataGrid>
    

    我只是在玩代码。但是,当我单击例如 Column Mes 1 中的一个单元格,然后使用键盘导航时,可以聚焦 Torque 和 Average 列的单元格:-(

    我猜你必须将IsEnabled 属性设置为false 然后:

    <DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Torque">
        <Setter Property="IsHitTestVisible" Value="False"/>
        <Setter Property="IsTabStop" Value="False"/>
        <Setter Property="IsEnabled" Value="False"/>
    </DataTrigger>
    

    【讨论】:

    • 我只是在玩代码。但是,当我单击例如 Column Mes 1 中的一个单元格,然后使用键盘导航时,可以聚焦 Torque 和 Average 列的单元格:-(
    【解决方案2】:

    可以使用CellTemplate,在下面的示例中,其中一列单元格将是图像:

    <DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False" >
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
            <DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Image Source="{Binding Image}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      • 2011-12-11
      • 2017-07-25
      • 2014-11-01
      相关资源
      最近更新 更多