4

这可能是一个很长的问题,我会尽力正确地问它。

我想阅读包含大量数字数据的大型 .txt 文件。在每个文件中都会有“通道”(30-50 个通道,有自己的名称、轴单位,当然还有数据)。因此,我创建了一个class Channel具有该属性的 a,以及一个class File具有该频道列表的 a。它还有一个读取文件并将所有内容存储在列表中的方法。

我希望能够同时加载多个文件,为此我创建了一个UserControl包含一个用于加载文件的按钮和一个ComboBox显示每个通道的按钮:

在此处输入图像描述ComboBox绑定到一个ObservableCollection)数据存储在用户控件后面的代码中。因此,当我插入我的MainWindow几个时,UserControls我无法访问该数据。

我想要的是有几个 UserControl ...

在此处输入图像描述

...并且能够绘制该绘图仪中每个数据的数据,并能够进行一些控制(上一个,下一个..)

在此处输入图像描述

我的第一种方法是将所有内容都存储在 中UserControl,这很容易做到但效果不佳。所以我发现可能的解决方案是将所有内容存储在其他地方,然后从 MainWindow 或其他地方访问那里。我已经非常努力地学习 MVVM 并在我的项目中使用它。但我一定很愚蠢,因为我无法理解。

我的新方法在下一个方案中描述:

在此处输入图像描述

我的问题:

1.这是正确的做法吗?如果 MVVM 是一种方式,我求求你,请在开始时给我一点指导,因为我无法将 MVVM 的那些复杂示例翻译到我的项目中。

2.如果我做的或多或少是对的,我怎么能将所有这些数据存储在其他地方并从中访问MainWindow?(在我的 File 类中,我有一个将所有内容存储在列表中的方法,因此在我的 UserControl 中,我有一个获取文件名的“浏览”按钮,然后使用 read() 方法将所有内容存储在 (?)File class或至少在我创建新文件的地方:) UserControl

如果需要,我会发布代码、图片、更多信息以及任何内容。谢谢。

4

1 回答 1

2

如果 MVVM 是一种方式,我求求你,请在开始时给我一点指导,因为我无法将 MVVM 的那些复杂示例翻译到我的项目中。

至少在本质上,您已经使用了 MVVM 的一半。这不是“方式”,但它肯定是处理这个问题(相当不错的)方式。

为了使用 MVVM 类型的设计进行设计,您需要将“MY DATA”类设为DataContextUserControl。所有数据都将存储在那里(最好用ObservableCollection<T>代替List<T>,因为这样可以更有效地处理绑定)。

您的“UserControl1”部分可能是某种形式的 ItemsControl,绑定到源集合。然后可以将所选项目绑定到您的“我的数据”类中的某些内容,这决定了应该显示哪个“情节”。

直接回答您的问题:

1.这是正确的做法吗?

这绝对是直接正确的一步。将数据与控件分开存储是使应用程序更加灵活和可维护的关键支柱之一(也是 MVVM 的一大目标)。

2.如果我做得或多或少是对的,我怎么能将所有这些数据存储在其他地方并从 MainWindow 访问它?

您可以通过将类设置为DataContextUserControl 和/或MainWindow. 这允许您绑定到数据类的属性(这实际上是 MVVM 术语中的 ViewModel)。


另外,我知道您已经尝试学习和学习 MVVM - 最初很难掌握,但值得付出努力。我会说您的设计方案(实际上是左侧的“选项”列表和右侧的“详细信息”窗格)并不少见 - 它实际上类似于我在 MVVM 的博客系列中的示例,一旦您了解了基础知识,应该很容易创建。

于 2013-06-03T15:42:20.690 回答