设置WpfToolkit datagrid列编辑样式

设置WpfToolkit datagrid列编辑样式,wpf,mvvm,datagrid,styles,Wpf,Mvvm,Datagrid,Styles,如果特定条件为真,如何使单个datagrid列可编辑 我在应用程序中使用MVVM模式 Model :: public class Book : INotifyPropertyChanged { public int BookId {get; set;} public string Title {get; set;} public string SerialNumber {get; set;} public bool CanEditSerialNumber

如果特定条件为真,如何使单个datagrid列可编辑

我在应用程序中使用MVVM模式

 Model ::

public class Book : INotifyPropertyChanged
{
    public int BookId {get; set;}

    public string Title {get; set;}

    public string SerialNumber {get; set;}

    public bool CanEditSerialNumber {get; set;} // Allows editing serialnumber if this property is set to true.

}
视图模型::

public class MyViewModel : INotifyPropertyChanged
{
     DbEntities _dbEntities; // ADO.Net entity model.

     public ObservableCollection<Book> Books {get; set;}

     public MyViewModel()
     {
         this.ListAllBooks();
     }

     public void ListAllBooks()
     {
         _dbEntities = new DbEntities();

         var book = from _book in _dbEntities.Book
                    select new Book()
                    {
                       BookId = _book.BookID,
                       Title = _book.Title
                       SerialNumber = _book.ISBN,
                       CanEditSerialNumber = _book.HasSerialNumber
                    }

          Books = new ObservableCollection<Book>(book);
          OnPropertyChanged("Books");
     }

}
公共类MyViewModel:INotifyPropertyChanged
{
DbEntities _DbEntities;//ADO.Net实体模型。
公共可观测收集簿{get;set;}
公共MyViewModel()
{
这个.ListAllBooks();
}
公共作废清单所有书籍()
{
_dbEntities=新的dbEntities();
var book=来自_dbEntities.book中的_book
选择新书()
{
BookId=\u book.BookId,
书名
SerialNumber=\u book.ISBN,
CanEditSerialNumber=\u book.HasSerialNumber
}
帐簿=新的可观测集合(帐簿);
不动产变更(“账簿”);
}
}
视图:: 我将ObservableCollection书籍绑定到WpfToolkit数据网格

<WpfToolkit:DataGrid Name="dgBooks"
                     ItemSource = {Binding Books}
                     ....>

     <WpfToolkit.DataGrid.Columns>

         <!-- Here I want to display Book Title and SerialNumber -->   

         <CustomControls:LabelTextBoxColumn Binding={Binding Title}
                                            ElementStyle={StaticResource myLabelStyle}
                                            />

         <!-- This column should be editable only if CanEditSerialNumber property is set to true. -->
         <CustomControls:LabelTextBoxColumn Binding={Binding SerialNumber}
                                            ElementStyle={StaticResource myLabelStyle}
                                            EditElementStyle={StaticResource myTextBoxStyle}/>

     </WpfToolkit.DataGrid.Columns>


是否可以基于布尔值仅使单个datagrid列可编辑?

目前,我已经完成了以下工作:

   <CustomControls:LabelTextBoxColumn.EditElementStyle>

        <Style TargetType="{x:Type TextBox}">

           <Style.Triggers>
               <Trigger Property={Binding CanEditSerialNumber} Value="False">
                 <Setter Property="IsReadOnly" Value="True">
               </Trigger>
           </Style.Triggers>

        </Style>

   </CustomControls:LabelTextBoxColumn.EditElementStyle>


虽然不能很好地工作,但现在就可以了。欢迎提出任何其他建议