Domanda

Ho un VehicleViewModel che ha un ViewModel secondario di NotesViewModel

public IManageVehicleNotesViewModel NotesViewModel { get; set; }

Alla prima attivazione di VehicleViewModel, attivo il ViewModel secondario.

NotesViewModel.Activate();

L'attivazione chiama un metodo per avviare un numero di comandi, ho interrotto questo e viene chiamato.

CreateCommand = new DelegateCommand<object>(OnCreateCommand, CanCreate);

Tuttavia, sebbene le TextBox siano vincolanti sulla vista secondaria (quindi DataContext è attivo) nessuno dei comandi è vincolante - ho provato a chiamare RaiseCanExecuteChanged sui comandi ma non disabilitano, abilitano o chiamano i metodi come previsto.

Non so se sia rilevante (dato che le TextBox sono vincolanti) ma sto associando View e ViewModel usando un ResourceDictionary in questo modo ...

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:v="clr-namespace:GTS.GRS.N3.Modules.Vehicles.Views"
    xmlns:vm="clr-namespace:GTS.GRS.N3.Modules.Vehicles.Model">
  <DataTemplate DataType="{x:Type vm:ManageVehicleViewModel}">
    <v:ManageVehicleView />
  </DataTemplate>
  <DataTemplate DataType="{x:Type vm:ManageVehicleNotesViewModel}">
    <v:ManageVehicleNotesView />
  </DataTemplate>
</ResourceDictionary>

I comandi sul livello superiore di VehicleViewModel funzionano.

Qualcuno ha sperimentato qualcosa del genere? È l'ordine che sto facendo? Qualsiasi aiuto ricevuto con gratitudine!

Saluti,

Andy

È stato utile?

Soluzione

La proprietà CreateCommand attiva l'evento PropertyChanged ? In caso contrario, l'interfaccia utente non verrà notificata quando la si assegna ...

Prova a utilizzare uno strumento come Snoop per verificare se la proprietà Command del pulsante è impostato

Altri suggerimenti

Fallo e controlla l'output per vedere cosa sta succedendo:

<UserControl …
     xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase" />

<Button Command="{Binding MyCommand, 
                  diagnostics:PresentationTraceSources.TraceLevel=High}" … />

Dovrebbe indicare a quale oggetto sta effettivamente cercando di collegarsi, ecc. Controlla la finestra di output mentre sei in esecuzione per vedere cosa sta succedendo con quell'associazione.

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