如何使 WPF DataGridCell 只读?

21

我知道你可以将整个DataGrid或整列设置为只读(IsReadOnly = true)。然而,在单元格级别,此属性是只读的。但我确实需要这种细粒度控制。以前DataGrid是公共领域的源代码,有一篇关于通过更改源代码向行添加IsReadOnly的博客,但现在我没有DataGrid的源代码。有什么解决方法吗?

使单元格被禁用(IsEnabled=false)几乎符合我的需求。但问题是,你甚至不能点击被禁用的单元格来选择行(我采用了完整的行选择模式)。

编辑: 由于没有人回答这个问题,所以我想这并不是一个简单的修复。这里有一个可能的解决方法:使单元格不可编辑。唯一的问题是,点击单元格不会选择该行。我刚注意到,当点击禁用的单元格时,DataGrid的MouseDown或MouseUp事件仍然会触发。在这个事件处理程序中,如果我能找出它单击的行,我就可以以编程方式选择行。然而,我无法从中找到底层行。有人可以给我一些提示吗?

11个回答

0

您可以使用更简单的数据模板来完成此操作。

<DataGrid.Resources>
    <DataTemplate x:Key="MyTemplate" DataType="MyRowDataType">
        <TextBox Text="{Binding Value}" IsReadOnly="{Binding IsReadOnly}" />
    </DataTemplate>
</DataGrid.Resources>

...

<DataGridTemplateColumn CellTemplate="{StaticResource MyTemplate}" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接