WPF在MVVM模式中GridControl控件数据绑定

75 阅读1分钟

WPF在MVVM模式中GridControl控件数据绑定

MVVM模式,DevExpress v20.2的dxg:GridControl控件

在xaml绑定数据源:

View

<dxg:GridControl Grid.Column="0" ItemsSource="{Binding Persons}"> dxg:GridControl.Columns <dxg:GridColumn FieldName="Name" Header="姓名"/> <dxg:GridColumn FieldName="Age" Header="年龄"/> </dxg:GridControl.Columns> dxg:GridControl.View <dxg:TableView ShowTotalSummary="True"/> </dxg:GridControl.View> </dxg:GridControl>

ViewModel

class MainWindowViewModel : ViewModelBase { public MainWindowViewModel() { Persons = new ObservableCollection(); Persons.Add(new Person("张三", 3)); Persons.Add(new Person("李四", 4)); Persons.Add(new Person("王五", 9)); Persons.Add(new Person("赵六", 6)); } public ObservableCollection Persons { get { return GetProperty(() => Persons); } set { SetProperty(() => Persons, value); } } }

public class Person:BindableBase
{
    public Person(string Name,int Age)
    {
        this.Name = Name;
        this.Age = Age;
    }
    public string Name
    {
        get { return GetProperty(() => Name); }
        set { SetProperty(() => Name, value); }
    }

    public int Age
    {
        get { return GetProperty(() => Age); }
        set { SetProperty(() => Age, value); }
    }
}

结果:

在这里插入图片描述

在代码动态添加列并绑定:

View

<dxg:GridControl Grid.Column="1" x:Name="GridControl" ItemsSource="{Binding Persons}"> dxmvvm:Interaction.Triggers <dxmvvm:EventToCommand EventName="Loaded" Command="{Binding GridControlLoadCmd}" CommandParameter="{Binding ElementName=GridControl}"/> </dxmvvm:Interaction.Triggers> dxg:GridControl.View
<dxg:TableView ShowTotalSummary="True"/> </dxg:GridControl.View> </dxg:GridControl>

ViewModel

public MainWindowViewModel() { Persons = new ObservableCollection(); Persons.Add(new Person("张三", 3)); Persons.Add(new Person("李四", 4)); Persons.Add(new Person("王五", 9)); Persons.Add(new Person("赵六", 6)); } public ObservableCollection Persons { get { return GetProperty(() => Persons); } set { SetProperty(() => Persons, value); } }

    public DelegateCommand<GridControl> GridControlLoadCmd
    {
        get
        {
            return new DelegateCommand<GridControl>((e) => {
                GridColumn gc = new GridColumn();
                gc.Header = "姓名";
                gc.Binding = new Binding()
                {
                    Path = new PropertyPath("Name")
                };
                e.Columns.Add(gc);
                GridColumn gc1 = new GridColumn();
                gc1.Header = "年龄";
                gc1.Binding = new Binding()
                {
                    Path = new PropertyPath("Age")
                };
                e.Columns.Add(gc1);

            });
        }
    }

}

public class Person:BindableBase
{
    public Person(string Name,int Age)
    {
        this.Name = Name;
        this.Age = Age;
    }
    public string Name
    {
        get { return GetProperty(() => Name); }
        set { SetProperty(() => Name, value); }
    }

    public int Age
    {
        get { return GetProperty(() => Age); }
        set { SetProperty(() => Age, value); }
    }

}

结果

在这里插入图片描述