在我的实际项目中,我必须在WPF-DataGrid中显示和修改关于MVVM-Model的多个产品框架尺寸的单位编号。 为此,每个框架尺寸都具有特定年份的多个单位编号。
我的模型具有以下结构:
帧大小
class Framesize
{
public ObservableCollection<UnitNumber> UnitNumbers { get; set; }
...
}
单位编号
class UnitNumber
{
public int Year { get; set; }
public int Number { get; set; }
}
实际上,这是一个非常简单的二维结构(帧大小x
年)。确实,DataGrid布局很难:
所需的布局如下所示:DataGrid Layout。 DataGrid应该能够包含多个框架大小。为此,应该从所有框架大小的最小年份和最长年份中计算出具有年份的列。 这些行应包含框架尺寸标签和相应年份的单位编号。
最重要的是,由于MVVM-Model,DataGrid中的更改应通过绑定自动传递给模型。例如,当用户在特定年份更改某个框架尺寸的单位编号时。
在ViewModel中,我声明了变量UnitNumbersList
,该变量通过XAML绑定到DataGrid:
<DataGrid x:Name="dataGrid" Grid.Column="2" Margin="10,45,10,10" ItemsSource="{Binding Path=UnitNumbersList}"/>
现在的问题是,这应该是什么变量?
为此,我考虑了一个DataTable,因为它可以轻松地以编程方式创建。因此,在ViewModel中分配给绑定变量的是生成的DataTable。 可悲的是,我无法将更改后的值传递给模型绑定,因此DataTable方法仅适合显示模型中的值,而不适合我。
那我该如何用一个最好的简单解决方案解决这个问题呢?