绑定问题shell视图模型类[Caliburn.Micro]中属性的WPF窗口标题

时间:2011-01-06 13:39:50

标签: wpf window title caliburn.micro

我在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。

如何删除此行为?感谢您的建议。

2 个答案:

答案 0 :(得分:20)

由于IScreen是使用IHaveDisplayName定义的,并且CM框架的Screen类具有DisplayName属性,因此您只需在ShellViewModel中设置该属性,如下所示:

public ShellViewModel()
{
    base.DisplayName = "Spirit";
}

答案 1 :(得分:0)

从您给出的代码中判断一下有点困难,但我假设您将Window的DataContext分配给代码隐藏中的ShellViewModel实例。 ShellViewModel何时初始化?

您需要在ViewModel中为要查看更改值的任何属性实施INotifyPropertyChanged。这里的链接是MSDN文档,但是如果你搜索Google和/或SO,你会看到很多例子。