我在WPF Window的标题属性shell shell视图模型类中遇到绑定属性的简单问题。
我的shell视图如下所示:
<Window x:Class="Spirit.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Path=Title}" >
<Grid>
<ContentControl x:Name="ActiveItem" />
</Grid>
</Window>
shell视图模型类:
[Export(typeof(IShellViewModel))]
public class ShellViewModel : Conductor<IScreen>.Collection.OneActive, IShellViewModel
{
private string _title;
public string Title
{
get { return _title; }
set
{
_title = value;
NotifyOfPropertyChange(()=>Title);
}
}
public ShellViewModel()
{
Title = "Spirit";
}
}
如果我运行app的shell视图标题(WPF窗口)是Namespace.ShellViewModelClass,则在shell视图模型类中没有属性Title的值。
如果我在shell视图中激活某个屏幕,则窗口的Title属性为Namespace.ViewModelClass。
如何删除此行为?感谢您的建议。
答案 0 :(得分:20)
由于IScreen是使用IHaveDisplayName定义的,并且CM框架的Screen类具有DisplayName属性,因此您只需在ShellViewModel中设置该属性,如下所示:
public ShellViewModel()
{
base.DisplayName = "Spirit";
}
答案 1 :(得分:0)
从您给出的代码中判断一下有点困难,但我假设您将Window的DataContext分配给代码隐藏中的ShellViewModel实例。 ShellViewModel何时初始化?
您需要在ViewModel中为要查看更改值的任何属性实施INotifyPropertyChanged。这里的链接是MSDN文档,但是如果你搜索Google和/或SO,你会看到很多例子。