我正在设计一个LogManager
类来处理我的应用程序中的所有日志,形式为LogMessage
个对象。它们保存在班级的ObservableCollection
中。 LogManager
本身在我的程序的每个部分都是静态的。
现在我想创建一个View
,可以显示ObservableCollection
LogMessages
,但我无法理解如何通知ViewModel
已添加新的LogMessage
...
我尝试实现INotifyPropertyChanged
,但由于该类是静态的,因此无法实现。
PS:我正在为我的应用程序使用MVVM-Light工具包
答案 0 :(得分:2)
你应该考虑你LogManager
的责任。它真的需要实现INotifyPropertyChanged
吗?
您可以在XAML中使用StaticResource
作为LogManager
,或者在View的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
非静态。