启动可观察集合,然后从多个类/方法访问该集合

时间:2017-10-20 15:38:03

标签: c# wpf

C#和WPF相当新,所以如果这很明显就道歉。

我已将控制台应用程序转换为WPF应用程序,我想要做的是将所有Console.WriteLine行传递给可观察集合,然后将新添加的行写入文本框,以显示用户界面的进展。

我遇到的问题是我想从这个ObservableCollection写入多个类,这就是我坚持的观点。

到目前为止,这是我接触过这个问题的方法......

模型 - 我定义了可观察集合:

public class Progress
    {

        private ObservableCollection<string> _GGProgress = new ObservableCollection<string>();
        public ObservableCollection<string> GGProgress
        {
            get { return _GGProgress; }
            set { _GGProgress = value; }
        }
    }   

MainWindow.xaml.cs - 创建进度类的实例并将CollectionChanged事件附加到它:

//Initiage the Progress class
 Progress prog = new Progress();

public MainWindow()
        {
            InitializeComponent();
            prog.GGProgress.CollectionChanged += GGProgress_CollectionChanged;

        }

private void GGProgress_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {            
            if (e.NewItems != null && e.NewItems.Count > 0)
            {
                GGImportProgress.Text += e.NewItems[0];
            }
        }

然后我可以在MainWindow.xaml.cs中调用它:

prog.GGProgress.Add("Text added");

它会按预期更新文本框。但是,从MainWindow.xaml.cs开始,我将启动更多的类,在这些类中,我可以启动更多的类,并且从所有这些类中我希望能够更新observable集合并让它更新该文本框在用户界面。

我尝试启动Progress类,然后通过我启动它的类访问它,但我很快就打了循环引用。

我可以看一下整个事情的重写,但我想知道我是否遗漏了一些东西,并且我有一个优雅的解决方案可以实现,以便能够从不同的嵌套类更新该可观察集合?

我目前没有使用MVVM,因为我认为这将是一个小而简单的&#39;应用程序,但如果它让生活更轻松,将愉快地切换。

0 个答案:

没有答案