Problema con il titolo vincolante della finestra WPF sulla proprietà nella classe Modello Visualizza Shell [Caliburn.Micro

StackOverflow https://stackoverflow.com/questions/4615467

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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top