两个数据网格合并为一个以及发生另一个错误时如何将数据网格设置为可编辑

Two data grid combined as one and how to set the data grid editable when another one error occured

我创建了 2 个数据网格并将它们并排放置。数据网格允许用户编辑,当值范围为“0 > input”或“100 < input”时,将显示错误图标。

但是,当数据网格1发生错误时,用户仍然可以编辑数据网格2。当数据网格1发生错误时,用户无法编辑其他数据网格怎么办?对这种情况有什么建议或对此有适当的解决办法吗?

使用 WPFToolKit 数据网格,因为当前项目版本是 .Net 3.5

目标数据网格视图

Download Project

WPF DataGrid 有一个 IsReadOnly 属性,您可以将其设置为 True 以确保用户无法编辑您的 DataGrid 的单元格。

你可以将一些布尔值绑定到两个网格的 IsReadOnly属性,它会改变以防输入(我想也是绑定的)超出范围(你可以设置这个input setter)

中的一种行为

代码片段:

public class SomeViewModel: INotifyPropertyChanged
{
     // INotifyPropertyChanged members
     public event PropertyChangedEventHandler PropertyChanged;

     public void OnPropertyChanged(PropertyChangedEventArgs e)
     {
        if (PropertyChanged != null)
               PropertyChanged(this, e);
     }

     // Input property
     private string _input;

     public string InputGrid1
     {
       get
       {
            return _input;
       }
       set
       {
           if (value < 0 || value > 100 )
           {
              IsEditable = true;
           }

           _input= value;
           OnPropertyChanged(new PropertyChangedEventArgs("InputGrid1"));
       }
     }

     // ... The same for InputGrid2

     // bool property
     private bool _isEditable;

     public bool IsEditable
     {
       get
       {
            return _isEditable;
       }
       set
       {
           _input= _isEditable;
           OnPropertyChanged(new PropertyChangedEventArgs("IsEditable"));
       }
     }
} 

WPF 代码片段:

  <DataGrid
       DataContext="{StaticResource SomeViewModel}"
       IsReadOnly="{Binding IsEditable}">
  </DataGrid>  

  <DataGrid
       DataContext="{StaticResource SomeViewModel}"
       IsReadOnly="{Binding IsEditable}">
   </DataGrid>