绑定Datagrid行号

时间:2011-11-23 11:28:38

标签: c# .net wpf mvvm

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

[编辑]

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

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

1 个答案:

答案 0 :(得分:0)

好的,还不是很清楚,但我会尝试提供一些答案...... 这就是我理解一个问题的方法:你有一个类型为Order'的属性,名为'Order',并希望在数据网格中编辑这个属性,例如使用Combo

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

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>

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

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