Pergunta

Eu tenho um VehicleViewModel que tem uma sub ViewModel de NotesViewModel

public IManageVehicleNotesViewModel NotesViewModel { get; set; }

Na primeira ativação de VehicleViewModel eu ativar o sub ViewModel.

NotesViewModel.Activate();

A ativação chama um método init um número de comandos, eu pausa já apontou isso e seu que está sendo chamado.

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

No entanto, embora os TextBoxes são obrigatórias para a sub View (de modo que o DataContext está em vigor) nenhum dos comandos são vinculativas - Eu tentei chamar RaiseCanExecuteChanged sobre os comandos, mas eles não desabilitar, habilitar ou chamar os métodos como esperado.

Eu não sei se sua relevante (como os TextBoxes são vinculativas), mas eu estou associando a View e ViewModel usando um ResourceDictionary como assim ...

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

Os comandos no trabalho VehicleViewModel nível superior.

Alguém já experimentou nada como este? É a ordem que eu estou fazendo as coisas? Qualquer ajuda recebidas com gratidão!

Cheers,

Andy

Foi útil?

Solução

Será que a propriedade CreateCommand gatilho do evento PropertyChanged? Se isso não acontecer, a interface do usuário não será notificado quando você atribui isso ...

Tente usar uma ferramenta como Snoop para verificar se a propriedade Command do botão é definido

Outras dicas

Faça isso e verifique a saída para ver o que está acontecendo:

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

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

Deve relatar o objeto que ele está realmente tentando se ligam a, etc. Verifique a janela de saída enquanto você está correndo para ver o que está acontecendo com essa ligação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top