这可能是一个很长的问题,我会尽力问它。
我想阅读包含大量数字数据的大型.txt文件。在每个文件中将有“通道”(30-50个通道,具有自己的名称,轴单位,当然还有数据)。所以我创建了一个包含该属性的class Channel
,以及一个包含该通道列表的class File
。它还有一个读取文件并将所有内容存储在列表中的方法。
我希望能够同时加载多个文件,为此我创建了一个UserControl
,其中包含一个用于加载文件的按钮和一个显示每个频道的ComboBox
:
(ComboBox
绑定到ObservableCollection
)
数据存储在用户控件后面的代码中。因此,当我在MainWindow
多个UserControls
中插入时,我无法访问该数据。
我想要的是有几个UserControl ......
...并且能够在该绘图仪中绘制每个数据的数据,并能够进行某些控制(上一个,下一个..)
我的第一个方法是将所有内容存储在UserControl
中,这很容易做但效果不佳。
所以我想出的可能是解决方案是将所有内容存储在其他地方,然后从MainWindow或其他地方访问。我已经尝试过非常难以学习MVVM并在我的项目中使用它。但我必须非常愚蠢,因为我无法得到它。
我的新方法将在下一个方案中描述:
我的问题:
1.这是正确的做法吗?如果MVVM是这样的话,拜托,求求你,请在一开始就引导我,因为我无法将MVVM的那些错综复杂的例子翻译成我的项目。
2.如果我或多或少做得对,我怎么能将所有数据存储在其他地方并从MainWindow
访问它? (在我的File类中,我有一个存储所有列表的方法,所以在我的UserControl中我有“浏览”按钮获取文件名,然后使用read()方法将所有内容存储在(?){{1或者至少在我创建新文件的地方:File class
)。
如果需要,我会发布代码,图片,更多信息,任何内容。感谢。
答案 0 :(得分:2)
如果MVVM是这样的话,拜托,求求你,请在一开始就指导我一点,因为我无法将MVVM的那些错综复杂的例子翻译成我的项目。
至少在本质上,你已经在使用MVVM的一半了。这不是“方式”,但肯定是 (相当不错)的方式来处理这个问题。
为了使用MVVM类型的设计进行设计,您需要将“MY DATA”类设置为UserControl的DataContext
。所有数据都将存储在那里(最好是ObservableCollection<T>
而不是List<T>
,因为这样可以更有效地处理绑定。)
您的“UserControl1”部分可能是某种形式的ItemsControl,绑定到一组源。然后,所选项目可以绑定到“我的数据”类中的某个内容,该类确定应显示哪个“情节”。
直接回答您的问题:
1.这是正确的做法吗?
这绝对是直接向右迈出的一步。将数据与控件分开存储是使应用程序更加灵活和可维护(以及MVVM的大目标)的关键支柱之一。
2.如果我或多或少做得对,我怎么能将所有数据存储在其他地方并从MainWindow访问它?
您可以通过将类设置为UserControl的DataContext
和/或MainWindow
来处理此问题。这允许您绑定到数据类的属性(实际上是MVVM术语中的ViewModel)。
另外,我知道你已经尝试过学习和学习MVVM - 而且最初很难掌握,但值得努力。我会说你的设计场景(实际上是左边的“选项”列表和右边的“详细”窗格)并不罕见 - 它实际上类似于我blog series on MVVM中的示例,一旦理解了基础知识,就应该很容易创建。