禁用WPF数据网格中的行

时间:2013-01-16 12:38:59

标签: c# wpf datagrid prism datatrigger

我有一个observablecollection绑定到datagrid。此集合是从搜索结果中填充的。我还可以向datagrid添加项目。我想禁用行,这是原始集合的一部分。我添加的新行应该是可编辑的。我的限制是,我不能在集合中使用布尔属性来在数据触发器中使用。有办法吗?

编辑:忘了提到我正在使用MVVM框架。

1 个答案:

答案 0 :(得分:2)

如果无法将“IsEnabled”属性添加到集合中的项目,则始终可以创建继承自这些项目的类/类型的新类。

    public class MyDataGridPresenterClass : OriginalItemClass
    {
        public bool IsEnabled { get; set; }
    }

并在type中使用这个新的ObservableCollection没有什么可以阻止你这样做......当然每个MyDataGridPresenterClass也是OriginalItemClass,因为它继承了它。

所以你可以拥有

    ObservableCollection<MyDataGridPresenterClass> DataGridItems
    {
        get { return this.dataGridItems; }
        set
        {
            this.dataGridItems = value;
            RaisePropertyChanged("DataGridItems");
        }
    }

现在你有IsEnabled属性,所以你可以在你提到的DataTrigger中使用它,你没有修改OriginalItemClass并且每个人都很高兴。 :) 还有一件事。只是要明确:) MVVM不是框架...... MVVM是设计模式。我希望这有帮助:)祝你好运,祝你好运:)