WPF DataGrid对不同数据类型的动态绑定

      需要在DataGrid中展示不同Model的数据,可以将DataGrid的AutoGenerateColumns属性设置为"True",让列自动生成即可,但是列名字就会默认为属性名字,给用户看不合适,则可以通过对属性添加Description来保存列名字。

1.对Model属性增加Description 

    需要展示的写Description,不需要的就不写,在下面会通过是否有Description来控制在DataGrid是否展示。

 public class DataModel
 {
        [Description("序号")]
        public int Index { get; set; }
        [Description("名字")]
        public string name { get; set; }
        public string comment{ get; set; }
 }

2.在ViewModel中增加DataGrid绑定的数据对象

public class DataViewModel
{
        private ObservableCollection<object> items = new ObservableCollection<object>();
        public ObservableCollection<object> Items
        {
            get { return items ; }
            set { items = value; }
        }
}

3.在XAML中增加DataGrid

    DataGrid有一个AutoGeneratingColumn事件,在生成Column会触发这个事件,然后通过判断属性的Description是否有值来控制是否显示。

 <DataGrid  x:Name="fileList"  SelectionMode="Extended"  AutoGenerateColumns="True"  
   AutoGeneratingColumn="fileList_AutoGeneratingColumn"
   ScrollViewer.HorizontalScrollBarVisibility="Auto" VerticalAlignment="Stretch"
   ItemsSource="{Binding Items}">
private void fileList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
       if (string.IsNullOrEmpty((e.PropertyDescriptor as System.ComponentModel.PropertyDescriptor).Description))
       {
            e.Column.Visibility = Visibility.Collapsed;
       }
       else
       {
            e.Column.Header = Strings.GetString((e.PropertyDescriptor as System.ComponentModel.PropertyDescriptor).Description);
       }
}

4.增加数据

  对ViewModel中的Items增加数据,则前台可以显示出数据。

5.切换不同数据类型

  切换不同数据类型的时候DataGrid并不会自动删除列,所以需要手动删除之前的数据,并且重置一下AutoGenerateColumns 属性,我是增加了一个Combox类控制数据来源,当Combox切换时触发删除DataGrid数据。

 <ComboBox ItemsSource="{Binding EventTypeEnumItems}" 
           SelectionChanged="ComboBox_SelectionChanged"
           SelectedValue="{Binding EventType,Mode=TwoWay}" Width="245"/>
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
        this.fileList.Columns.Clear();
        this.DataViewModel.Items.Clear();
        this.fileList.AutoGenerateColumns = false;
        this.fileList.AutoGenerateColumns = true;
}

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
WPF中的DataGrid是一个非常强大的控件,可以用于显示和编辑数据。在WPF中,数据绑定是非常重要的,因为它可以使我们更加方便地将数据数据源绑定到控件。 以下是在WPF中使用DataGrid进行数据绑定的步骤: 1. 创建数据源 首先,我们需要创建一个数据源,可以是一个集合,也可以是一个DataTable。例如,我们可以创建一个名为“myData”的DataTable: ``` DataTable myData = new DataTable(); myData.Columns.Add("Name", typeof(string)); myData.Columns.Add("Age", typeof(int)); myData.Rows.Add("Tom", 20); myData.Rows.Add("Jerry", 30); ``` 2. 设置DataGrid的ItemsSource属性 接下来,我们需要将DataGrid的ItemsSource属性设置为我们的数据源,如下所示: ``` myDataGrid.ItemsSource = myData.DefaultView; ``` 3. 设置DataGrid列 我们需要为DataGrid设置列,让它可以正确地显示我们的数据。可以通过XAML或代码来设置列。以下是在代码中设置列的示例: ``` DataGridTextColumn nameColumn = new DataGridTextColumn(); nameColumn.Header = "Name"; nameColumn.Binding = new Binding("Name"); myDataGrid.Columns.Add(nameColumn); DataGridTextColumn ageColumn = new DataGridTextColumn(); ageColumn.Header = "Age"; ageColumn.Binding = new Binding("Age"); myDataGrid.Columns.Add(ageColumn); ``` 4. 运行程序 现在我们已经完成了数据绑定,可以运行程序并查看DataGrid中的数据了。 以上就是在WPF中使用DataGrid进行数据绑定的基本步骤。需要注意的是,我们可以使用不同数据源和不同的列类型来实现更加复杂的数据绑定。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值