我想将我的日志写入 ViewModel,这样我就可以向用户公开日志。
首先我将 View 绑定到 ViewModel
<TextBox Grid.Row="1" TextWrapping="Wrap" Text="{Binding Logger}" AcceptsReturn="True" IsReadOnly="True"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
这是视图模型
private string logger;
public string Logger
{
get { return logger; }
set
{
logger = value;
this.RaisePropertyChanged("Logger");
}
}
然后,我创建了实现 ILoggerFacade 的客户记录器类,并覆盖了 Bootstrapper 中的 CreateLogger 方法。
在引导程序中
protected override ILoggerFacade CreateLogger()
{
return new MainLogger();
}
在客户记录器类中
public class MainLogger : ILoggerFacade
{
public void Log(string message, Category category, Priority priority)
{
string messageToLog = String.Format(System.Globalization.CultureInfo.InvariantCulture, "{1}: {2}. Priority: {3}. Timestamp:{0:u}.", DateTime.Now, category.ToString().ToUpper(System.Globalization.CultureInfo.InvariantCulture), message, priority.ToString());
//////??????//////
}
}
应该填写什么???????。我试过Import IEventAggregator发布数据到ViewModel,这里直接导入ViewModel。两者都不起作用,因为在注册容器之前调用了 CreatorLogger 方法。那么如何将日志写入 ViewModel 呢?