2

我正在设计一个LogManager类来处理我的应用程序中的所有日志,以LogMessage对象的形式。他们被保存在ObservableCollection课堂上。它LogManager本身是静态的,可以访问我程序的每个部分。

现在我想制作一个View可以显示ObservableCollectionof 的LogMessages,但我不知道如何通知添加了ViewModel一个新LogMessage的...

我尝试实现INotifyPropertyChanged,但由于类是静态的,这是不可能的。

PS:我正在为我的应用程序使用 MVVM-Light 工具包

4

1 回答 1

2

你应该考虑你的责任LogManager。真的需要实施INotifyPropertyChanged吗?

您可以StaticResource在 XAML 中使用 aLogManager或在 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非静态的。

于 2013-06-07T13:04:19.253 回答