J'ai un VehicleViewModel qui a un sous ViewModel de NotesViewModelWPF - MVVM Commande lie Sub ViewModel
public IManageVehicleNotesViewModel NotesViewModel { get; set; }
Sur la première activation de VehicleViewModel activer le sous ViewModel. L'activation appelle une méthode pour initialiser un certain nombre de Commandes, j'ai cassé cela et l'ai appelée.
CreateCommand = new DelegateCommand<object>(OnCreateCommand, CanCreate);
Cependant, bien que les TextBoxes lient le sous View (de sorte que le DataContext est en place) aucune des commandes sont obligatoires - J'ai essayé d'appeler RaiseCanExecuteChanged sur les commandes, mais ils ne désactivez pas, permettent ou appelez les méthodes comme prévu.
Je ne sais pas si son pertinente (comme les zones de texte sont obligatoires) mais j'associer la vue et ViewModel en utilisant un ResourceDictionary comme si ...
<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>
Les commandes au niveau supérieur VehicleViewModel travail.
Quelqu'un a-t-il déjà expérimenté quelque chose comme ça? Est-ce l'ordre que je fais des choses? Toute aide reçue avec gratitude!
Cheers,
Andy
Nice one merci, précédemment Je n'ai jamais eu à avoir un PropertyChanged sur les Commandes, mais je viens de réactualiser mes Modules. J'avais compris que RaiseCanExecuteChanged était l'alternative à PropertyChanged pour les commandes, merci pour le pointeur! –
Si la commande est définie avant que la vue ne soit liée à ViewModel, vous n'avez pas besoin de déclencher PropertyChanged. Quoi qu'il en soit, mes propriétés de commande sont généralement en lecture seule et paresseuses, donc je n'ai pas besoin de m'en soucier –