【问题标题】:Binding Datagrid row number绑定Datagrid行号
【发布时间】:2011-11-23 11:28:38
【问题描述】:

我有一个带有 Order 属性的对象,我想将它绑定到我的数据网格中。是否可以 ?我想更改数据网格中的顺序并在我的对象中使用它(带有 order 属性)。我可以绑定吗?

[编辑]

public class MyObject
{
...
    public int Order {get; set;}
...
}

我想将此属性与我的行的索引绑定。

【问题讨论】:

  • 有可能吗?除非你尝试
  • 抱歉,没看懂你的问题,你的意思是这个 Order 属性是用来对行排序的吗?
  • 我真正想要的是订单更改将绑定到我的对象的 Order 属性以保存到数据库中

标签: c# .net wpf mvvm


【解决方案1】:

好的,仍然不是很清楚,但我会尝试提供一些答案...... 这就是我对问题的理解:您有一个名为“Order”的Order'类型的属性,并且想要在数据网格中编辑此属性,例如使用组合

假设您有一个这样的实体类(所有代码 - 只是示例,因为我不知道您拥有的确切类):

class Something : EntityBase {
    ................

    public int Order { get; set; }

    ................

}

它用数据模型包装,如:

public SomethingModel : EntitydataModelBase<Something> {

     ................

     public int Order {
         get {
             return this.Entity.Order;
         }
         set {
             if (this.Entity.Order == value) return;
             this.Entity.Order = value;
             NotifyPropertyChanged("Order");
         }
     }

     ................

}

此外,还有一个带有数据网格的屏幕视图模型,如下所示:

public SomethingListViewModel : ViewModelBase {


    ................


    public IList<SomethingModel> _Items;

    public IList<SomethingModel> Items {
        get {
           return _Items;
        }
        private set {
           if (_Items == value) return;
           _Items = value;
           NotifyPropertyChanged("Items");
        }
    }
    ................

}

最后是你的 XAML:

   ................

<Grid x:Name="gridContainer"> <!-- We will use this name to make a reference in binding expression --!>

   <DataGrid
       ItemsSource="{Binding Items, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
       <DataGrid.Columns>
            <!-- "Actually, don't remember a name of class for tempolated column" -->
            <DataGridTemplatedColumn
                 Header="Order">
                 <DataGridTemplatedColumn.CellTemplate>
                     <DataTemplate>
                         <TextBox
                              Text="{Binding Order, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
                     </DataTemplate>
                 </DataGridTemplatedColumn.CellTemplate>
            </DataGridTemplatedColumn>
       </DataGrid.Columns>
   </DataGrid>

   ................

希望这会有所帮助,如果没有,请提供您的示例代码,我会尝试添加一些基于它的示例

【讨论】:

  • 我现在没有VS,所以,如果某处代码有错误,请见谅
  • No Order 它只是一个整数属性给出了排名。我用一些代码编辑我的帖子。
  • 我刚刚根据这个改变了我的答案。其实......只是阅读“我的行索引”,嗯......如果是这样,我的回答是错误的。让我想想。
  • 我想,我终于明白你的意思了:) 但是最好在视图模型中计算这个属性,我不知道像 DataRow.RowIndex 这样的东西,也不认为这是个好主意通过 OneWayToSource 数据绑定或类似的方式计算 Orde3r。请在我的评论中提供一个加载您的 Items 属性模拟的代码,我会考虑如何实现订单计算
  • 尝试查看 DataGridRow.AlternationIndex - 也许它可以处理您想要的内容
猜你喜欢
  • 1970-01-01
  • 2011-04-06
  • 2011-05-15
  • 2013-10-07
  • 2012-02-12
  • 2015-07-02
  • 1970-01-01
  • 2012-07-05
  • 2014-01-09
相关资源
最近更新 更多