GridControl是一个表格组件,可以格式化显示结构数据。其基本使用方法如下:
在上述例子中,GridControl的列在xaml文件里已经设定,顺序是排好的。当GridControl的控件在cs文件定义,通过binding进行绑定的时候,序列就会按照对象属性定义的先后进行排列了。这就带来一个问题。比如基类A定义了两个属性A1和A2,继承基类A的类B定义了两个属性B1和B2。当我们将B的实例绑定到视图中的GridControl时,显示的顺序是A1,A2,B1,B2。而我们希望的顺序是B1,A1,B2,A2,这个问题怎么处理呢?
问题解决主要包含以下步骤:
1)定义两个类:A和B
2)将类B的实例与GridControl绑定
3)定义GridControl列排序xml文件
4)读取上述xml文件,将该排序定义绑定到GridControl
具体过程:
1)定义两个类:A和B
2)将类B的实例与GridControl绑定
viewmodel(Bviewmodel.cs)如下:
xaml(BModel.xaml)文件定义如下:
<dxg:GridControl x:Name="grid" CustomUnboundColumnData="grid_CustomUnboundColumnData">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Number1" />
<dxg:GridColumn FieldName="Number2" />
<dxg:GridColumn FieldName="Text1" />
<dxg:GridColumn FieldName="Text2" />
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView x:Name="view" AutoWidth="True" CellValueChanged="view_CellValueChanged" />
</dxg:GridControl.View>
</dxg:GridControl>
在上述例子中,GridControl的列在xaml文件里已经设定,顺序是排好的。当GridControl的控件在cs文件定义,通过binding进行绑定的时候,序列就会按照对象属性定义的先后进行排列了。这就带来一个问题。比如基类A定义了两个属性A1和A2,继承基类A的类B定义了两个属性B1和B2。当我们将B的实例绑定到视图中的GridControl时,显示的顺序是A1,A2,B1,B2。而我们希望的顺序是B1,A1,B2,A2,这个问题怎么处理呢?
问题解决主要包含以下步骤:
1)定义两个类:A和B
2)将类B的实例与GridControl绑定
3)定义GridControl列排序xml文件
4)读取上述xml文件,将该排序定义绑定到GridControl
具体过程:
1)定义两个类:A和B
namespace com.test{
public class A
{
public string A1{get;set;}
public string A2{get;set;}
}
}
namespace com.test{
public class B:A
{
public string B1{get;set;}
public string B2{get;set;}
}
}
2)将类B的实例与GridControl绑定
viewmodel(Bviewmodel.cs)如下:
namespace com.test{
public class Bviewmodel: INotifyPropertyChanged
{
//应该在构造函数为该集合赋一些测试数据
private ObservableCollection<B> b_vm= new ObservableCollection<B>();
}
public ObservableCollection<B> B_vm
{
get { return this.b_vm; }
set { this.b_vm= value; }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyname)
{
PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if (propertyChanged != null)
{
propertyChanged(this, new PropertyChangedEventArgs(propertyname));
}
}
}
xaml(BModel.xaml)文件定义如下:
<UserControl x:Class="com.test.BModel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:com.test"
xmlns:dxg="http://schema