Проблема с привязкой Заголовок окна WPF для свойства в классе модели вида оболочки [Caliburn.Micro] - PullRequest
8 голосов
/ 06 января 2011

У меня есть простая проблема со свойством привязки в классе модели вида оболочки в свойстве Title окна WPF - это оболочка.

Мой вид оболочки выглядит так:

<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>

модель вида оболочкиclass:

 [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";
        }
    }

Если я запускаю приложение Заголовок представления оболочки (окно WPF) - Namespace.ShellViewModelClass, значение свойства Title в классе модели вида оболочки не указывается.в представлении оболочки свойство Title окна - Namespace.ViewModelClass.

Как я могу удалить это поведение?Спасибо за совет.

Ответы [ 2 ]

20 голосов
/ 07 января 2011

Поскольку IScreen определяется с помощью IHaveDisplayName, а класс Screen инфраструктуры CM имеет свойство DisplayName, вам просто нужно установить это свойство в ShellViewModel, например:

public ShellViewModel()
{
    base.DisplayName = "Spirit";
}
0 голосов
/ 06 января 2011

Это немного сложно отличить от кода, который вы дали, но я предполагаю, что вы присваиваете DataContext вашего окна экземпляру ShellViewModel в своем коде. Когда инициализируется ShellViewModel?

Вам необходимо реализовать INotifyPropertyChanged в вашей ViewModel для любых свойств, для которых вы хотите увидеть измененное значение. Ссылка здесь на документацию MSDN, но если вы будете искать ее в Google и / или в SO, вы увидите множество примеров.

...