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;应用程序,但如果它让生活更轻松,将愉快地切换。