设置WpfToolkit datagrid列编辑样式
如果特定条件为真,如何使单个datagrid列可编辑 我在应用程序中使用MVVM模式设置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
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>
虽然不能很好地工作,但现在就可以了。欢迎提出任何其他建议