我正在设计一个LogManager
类来处理我的应用程序中的所有日志,格式为 LogMessage
对象。它们保存在 ObservableCollection
中在类里。 LogManager
它本身是静态的,可以在程序的每个部分进行访问。
现在我想做一个View
可以显示ObservableCollection
的LogMessages
,但我不知道如何通知 ViewModel
一个新的LogMessage
已添加...
我尝试实现INotifyPropertyChanged
,但由于类是静态的,这是不可能的。
PS:我正在为我的应用程序使用 MVVM-Light 工具包
最佳答案
您应该考虑您的LogManager
的职责。它真的需要实现INotifyPropertyChanged
吗?
您可以在 XAML 中为 LogManager
使用 StaticResource
,或者在 View 的 ViewModel 中为其提供属性。
View 模型:
//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 的内置依赖项注入(inject)功能并使 LogManager
非静态。
关于c# - 通知 ViewModel 静态模型的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984611/