Caliburn.Micro при настройке виртуальной машины для наследования экрана переопределяет поле заголовка в представлении - PullRequest
2 голосов
/ 31 января 2012

Если у меня ViewModel, например, так:

 public class ViewModel : IPropertyChangeBase, IViewModel
 {
 }

Свойство «Заголовок», которое я установил в xaml представления, с которым оно связано, правильно отображается.

Если у меня есть ViewModelВместо этого наследуйте от Screen. В заголовке отображается полное имя типа ViewModel, например «MarksProject.ViewModels.ViewModel».Это отображается в заголовке окна.

 //View Title property being overriden.
 public class ViewModel : Screen, IViewModel
 {
 }

Ответы [ 2 ]

7 голосов
/ 31 января 2012

Screen определяет свойство DisplayName, которое Caliburn.Micro использует для автоматического заполнения заголовков. Просто установите это в конструкторе так:

public ViewModel() {
    this.DisplayName = "MyTitle";
}

И вы вернете свой титул - и сохраните свойство в процессе;)

0 голосов
/ 12 июля 2016

Обычно плохая идея вызывать виртуальные члены (DisplayName) из конструктора, как в ответе @ T045T. Это более безопасный способ:

public class ViewModel : Screen
{
    public override string DisplayName
    {
        get { return "View Title"; }
        set { }
    }
}

Обратите внимание, что set { } необходимо, чтобы избежать Mode=TwoWay ошибок привязки.

...