Pregunta

Tengo un VehicleViewModel que tiene un sub ViewModel de NotesViewModel

public IManageVehicleNotesViewModel NotesViewModel { get; set; }

En la primera activación de VehicleViewModel, activo el sub ViewModel.

NotesViewModel.Activate();

La activación llama a un método para iniciar una serie de Comandos, he roto esto y se llama.

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

Sin embargo, aunque los cuadros de texto son vinculantes en la vista secundaria (por lo que el DataContext está en su lugar) ninguno de los comandos es vinculante: he intentado llamar a RaiseCanExecuteChanged en los comandos pero no deshabilitan, habilitan ni llaman a los métodos como se esperaba.

No sé si es relevante (ya que los cuadros de texto son vinculantes) pero estoy asociando View y ViewModel usando un ResourceDictionary como tal ...

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

Los comandos en el nivel superior VehicleViewModel funcionan.

¿Alguien ha experimentado algo como esto? ¿Es el orden en que estoy haciendo las cosas? Cualquier ayuda recibida con gratitud!

Saludos,

Andy

¿Fue útil?

Solución

¿La propiedad CreateCommand activa el evento PropertyChanged ? Si no es así, la IU no será notificada cuando la asignes ...

Intente utilizar una herramienta como Snoop para verificar si la propiedad Command del botón está configurado

Otros consejos

Haga esto y verifique la salida para ver qué está pasando:

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

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

Debería informar a qué objeto realmente está intentando vincularse, etc. Verifique su ventana de salida mientras está ejecutando para ver qué está sucediendo con ese enlace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top