首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置WpfToolkit数据网格列编辑样式

设置WpfToolkit数据网格列编辑样式
EN

Stack Overflow用户
提问于 2009-12-10 23:28:21
回答 1查看 946关注 0票数 1

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

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

代码语言:javascript
复制
 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.

}

ViewModel::

代码语言:javascript
复制
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");
     }

}

我将ObservableCollection Books绑定到一个WpfToolkit数据网格。

代码语言:javascript
复制
<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列吗?

EN

回答 1

Stack Overflow用户

发布于 2009-12-14 22:42:04

现在,这是我所做的:

代码语言:javascript
复制
   <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>

不能完美地工作,但现在可以了。欢迎任何其他建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1881749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档