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