Problema con il titolo vincolante della finestra WPF sulla proprietà nella classe Modello Visualizza Shell [Caliburn.Micro
-
26-09-2019 - |
Domanda
Ho un semplice problema con la proprietà vincolante nella classe Modello Visualizza shell sulla proprietà del titolo della finestra WPF: è Shell.
La mia vista con shell sembra così:
<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 View Model 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";
}
}
Se eseguo il titolo dell'app di Shell View (finestra WPF) è namespace.ShellViewModelClass, nessun valore del titolo della proprietà nella classe Modello di Visualizza Shell.
Se attivo uno schermo nella vista Shell, la proprietà del titolo della finestra è namespace.viewmodelclass.
Come posso rimuovere questo comportamento? Grazie per il consiglio.
Soluzione
Poiché iScreen è definito con ihavedisplayname e la classe dello schermo del framework CM ha una proprietà di DisplayName, devi solo impostare quella proprietà nel tuo shellviewModel, in questo modo:
public ShellViewModel()
{
base.DisplayName = "Spirit";
}
Altri suggerimenti
È un po 'difficile da dire dal codice che hai dato, ma presumo di assegnare il datacontext della tua finestra a un'istanza di ShellViewModel nel tuo codice. Quando viene inizializzato ShellViewModel?
Devi implementare Inotifyproperty -changed Nel tuo ViewModel per qualsiasi proprietà per cui desideri vedere un valore modificato. Il link qui è alla documentazione MSDN, ma se cerchi Google e/o giù di lì, vedrai molti esempi.