This question already has answers here:
How can I replace static ObservableCollection so it accesable on all windows in the MVVM way
(3个答案)
6年前关闭。
我正在设计一个
现在,我想制作一个可以显示
我尝试实现
PS:我正在为我的应用程序使用MVVM-Light工具包
XAML:
就是说,我认为考虑使用MvvmLight的内置依赖项注入功能并使
(3个答案)
6年前关闭。
我正在设计一个
LogManager
类,以处理LogMessage
对象形式的应用程序中的所有日志。它们保存在类的ObservableCollection
中。 LogManager
本身是静态的,可以在程序的每个部分访问。现在,我想制作一个可以显示
View
的ObservableCollection
的LogMessages
,但是我无法确定如何通知ViewModel
已添加新的LogMessage
。我尝试实现
INotifyPropertyChanged
,但是由于该类是静态的,因此这是不可能的。PS:我正在为我的应用程序使用MVVM-Light工具包
最佳答案
您应该考虑您LogManager
的责任。是否真的需要实现INotifyPropertyChanged
?
您可以在XAML中为StaticResource
使用LogManager
或在视图的ViewModel中为其提供属性。
ViewModel:
//Placeholder class
public static class LogManager
{
public static ObservableCollection<LogMessage> Messages { get; }
}
public class LogMessage
{
public string Text { get; set; }
}
public class LogManagerViewModel
{
public ObservableCollection<LogMessage> Messages { get { return LogManager.Messages; } }
}
XAML:
<ListBox ItemsSource="{Binding Messages}" DisplayMemberPath="Text" />
就是说,我认为考虑使用MvvmLight的内置依赖项注入功能并使
LogManager
为非静态是明智的。关于c# - 更改静态模型时通知ViewModel ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16984611/
10-10 23:27