如何在绑定到ObservableCollection时禁用DataGrid中的单元格

在我的程序中,我有一个UserControl,它包含一个DataGrid ,它的ItemsSource绑定到ObservableCollection 。 对于那个DataGrid我需要能够禁用和灰化特定的单元格。 我想在c ++中最好这样做,因为我可能需要在运行时更改这些单元格。 我知道如何使用IsReadOnly ,但看起来我只能为整个列切换。 这成为一个问题,因为我的列绑定到数据,这使我更难以定位特定的网格单元格。

话虽如此,

XAML:

           

数据模型:

 namespace Program.Data_Models { public class CartIO_Model : PropertyChangedBase { private string test1 = "One"; private string test2 = "Two"; private string test3 = "Three"; private string DISABLEDtest4 = "Four"; private string DISABLEDtest5 = "Five"; private ObservableCollection _collection; public CartIO_Model() { Collection = new ObservableCollection(); Collection.Add(new collectionData() { rowNum = 0, input = test1, output = ""}); Collection.Add(new collectionData() { rowNum = 1, input = test2, output = ""}); Collection.Add(new collectionData() { rowNum = 2, input = "", output = test3 }); Collection.Add(new collectionData() { rowNum = 3, input = "", output = DISABLEDtest4 }); Collection.Add(new collectionData() { rowNum = 4, input = DISABLEDtest5, output = ""}); } public ObservableCollection Collection {...} } public class collectionData { public int rowNum { set; get; } public string input { set; get; } public string output { set; get; } } } 

我在哪里以及如何控制启用/禁用哪些单元? 这让我感到困惑,因为IsEnabled是View控件的特性,而不是ObservableCollection

您可以为列定义CellStyle ,并根据模型或视图模型中的任何数据启用/禁用单元格。 在这里,我已禁用Inputs列中的所有单元格,其输入值为Test4

                 

只需创建一个TextBox样式。

   

并设置EditingElementStyle。