如何使用MVVM以编程方式向wpf datagrid添加列?

编程入门 行业动态 更新时间:2024-10-26 22:20:12
本文介绍了如何使用MVVM以编程方式向wpf datagrid添加列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我想在带有MVVM应用程序的WPF中的用户界面中创建一个数据透视表。所以列数不​​是静态的。

I wanna create a pivot table in the user interface in a WPF with MVVM application. So the number of columns are not static.

我发现我可以通过编程方式从文件中的代码添加列(如下面的代码片段所示)。

I have found that I can programmatically add columns from the code behind file (as shown in below code snippets).

myDataGrid.Columns.Add(column );

但我不要想使用文件后面的代码。我想使用MVVM(从视图模型)进行此操作。任何人都可以给我一个解决方案吗?

But I don't wanna use the code behind file. I wanna do this with MVVM (from the view model). Can anyone give me a solution for this?

推荐答案

我找到了解决方案。

答案是简单。

  • 定义一个 DataTable 在视图模型中
  • 定义列(在我的例子中,我必须以方式定义列 c> foreach 循环)
  • 添加行
  • 然后绑定DataTable for ItemsSource 属性的datagrid。 (确保 AutoGeneratedColumns = True )
  • Define a DataTable in the view model
  • Define columns (In my case I had to define columns programmatically within a foreach loop)
  • Add rows
  • Then bind the DataTable for the ItemsSource property of the datagrid. (Make sure that the AutoGeneratedColumns=True)
  • 我的查看模型

    private DataTable sizeQuantityTable; public DataTable SizeQuantityTable { get { return sizeQuantityTable; } set { sizeQuantityTable = value; NotifyPropertyChanged("SizeQuantityTable"); } }

    我已经认可了在构造函数中

    I have assinged dummy data in the constructor

    public MainViewModel() { this.SizeQuantityTable = new DataTable(); DataColumn sizeQuantityColumn = new DataColumn(); sizeQuantityColumn.ColumnName = "Size Quantity"; this.SizeQuantityTable.Columns.Add(sizeQuantityColumn); DataColumn sColumn = new DataColumn(); sColumn.ColumnName = "S"; this.SizeQuantityTable.Columns.Add(sColumn); DataColumn mColumn = new DataColumn(); mColumn.ColumnName = "M"; this.SizeQuantityTable.Columns.Add(mColumn); DataRow row1 = this.SizeQuantityTable.NewRow(); row1[sizeQuantityColumn] = "Blue"; row1[sColumn] = "12"; row1[mColumn] = "15"; this.SizeQuantityTable.Rows.Add(row1); DataRow row2 = this.SizeQuantityTable.NewRow(); row2[sizeQuantityColumn] = "Red"; row2[sColumn] = "18"; row2[mColumn] = "21"; this.SizeQuantityTable.Rows.Add(row2); DataRow row3 = this.SizeQuantityTable.NewRow(); row3[sizeQuantityColumn] = "Green"; row3[sColumn] = "24"; row3[mColumn] = "27"; this.SizeQuantityTable.Rows.Add(row3); DataRow row4 = this.SizeQuantityTable.NewRow(); row4[sizeQuantityColumn] = "Yellow"; row4[sColumn] = "30"; row4[mColumn] = "33"; this.SizeQuantityTable.Rows.Add(row4); }

    我的视图 / p>

    My view

    <Window x:Class="Pivot.MainWindow" xmlns="schemas.microsoft/winfx/2006/xaml/presentation" xmlns:x="schemas.microsoft/winfx/2006/xaml" xmlns:vm="clr-namespace:Pivot.ViewModels" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.DataContext> <vm:MainViewModel /> </Grid.DataContext> <DataGrid ItemsSource="{Binding SizeQuantityTable}" AutoGenerateColumns="True" /> </Grid> </Window>

    更多推荐

    如何使用MVVM以编程方式向wpf datagrid添加列?

    本文发布于:2023-11-12 18:41:10,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1582237.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:如何使用   方式   datagrid   MVVM   wpf

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!