Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当网格在运行时改变大小,但网格的内容都是相同类型时,如何在WPF应用程序中组织MVVM_C#_Wpf_Xaml_Mvvm_Dynamic - Fatal编程技术网

C# 当网格在运行时改变大小,但网格的内容都是相同类型时,如何在WPF应用程序中组织MVVM

C# 当网格在运行时改变大小,但网格的内容都是相同类型时,如何在WPF应用程序中组织MVVM,c#,wpf,xaml,mvvm,dynamic,C#,Wpf,Xaml,Mvvm,Dynamic,我有一个WPF应用程序,我使用MVVM模式在一个窗口中实现了这个应用程序,该窗口有一个网格,可以在运行时更改维度。网格单元的内容始终为相同类型,但网格中的列数因窗口的状态而异。我是MVVM模式和WPF应用程序的新手,所以我很难理解如何在视图模型中表示显示的数据,以及如何相应地更改视图的布局 我找到的最接近的答案是在这篇文章中,它描述了如何使用DataTemplates根据绑定到它的ViewModel动态更改视图,但是实现两个独立的ViewModel没有意义,唯一的区别是其中一个维护一个数据对象,

我有一个WPF应用程序,我使用MVVM模式在一个窗口中实现了这个应用程序,该窗口有一个网格,可以在运行时更改维度。网格单元的内容始终为相同类型,但网格中的列数因窗口的状态而异。我是MVVM模式和WPF应用程序的新手,所以我很难理解如何在视图模型中表示显示的数据,以及如何相应地更改视图的布局

我找到的最接近的答案是在这篇文章中,它描述了如何使用DataTemplates根据绑定到它的ViewModel动态更改视图,但是实现两个独立的ViewModel没有意义,唯一的区别是其中一个维护一个数据对象,另一个维护相同数据对象的数组或列表。

我也知道,我可以像本文中那样以编程方式配置网格,但与视图模型结合使用似乎过于复杂,似乎它打破了MVVM模式。


有没有一种处理这个问题的方法不会重复代码或破坏MVVM模式

Grid
被设计为包含一个类似于记录列表的数据结构,而这似乎与您的情况不同。您可以尝试另一个
ItemsControl
来表示您的数据。您有什么类型的数据?@prot
PlotModels
。每个“单元”将包含一个OxyPlot
PlotView
,它绑定到一个
PlotModel
对象,该对象包含数据点等。因此,要使用
ItemControl
,我将
ObservaleCollection
绑定到
ItemControl
,对于
PlotView
,我想是这样的,特别是如果它是一行“单元格”。您还可以使用自定义面板,例如,您可以使用
WrapPanel
Grid
设计为包含一个数据结构,如记录列表,而这似乎不是您的情况。您可以尝试另一个
ItemsControl
来表示您的数据。您有什么类型的数据?@prot
PlotModels
。每个“单元”将包含一个OxyPlot
PlotView
,它绑定到一个
PlotModel
对象,该对象包含数据点等。因此,要使用
ItemControl
,我将
ObservaleCollection
绑定到
ItemControl
,对于
PlotView
,我想是这样的,特别是如果它是一行“单元格”。您还可以使用自定义面板,例如,您可以使用
WrapPanel