У меня есть VehicleViewModel, у которого есть подчиненная ViewModel NotesViewModel.
public IManageVehicleNotesViewModel NotesViewModel { get; set; }
При первой активации VehicleViewModel я активирую вспомогательную ViewModel.
NotesViewModel.Activate();
Активация вызывает метод для запуска ряда команд, я указал на это и на то, что он вызывается.
CreateCommand = new DelegateCommand<object>(OnCreateCommand, CanCreate);
Однако, несмотря на то, что текстовые поля привязываются к вспомогательному представлению (поэтому DataContext находится на месте), ни одна из команд не является обязательной. Я пытался вызвать RaiseCanExecuteChanged для команд, но они не отключают, не включают и не вызывают методы, как ожидалось.
Я не знаю, актуально ли это (поскольку текстовые поля являются обязательными), но я связываю View и ViewModel с помощью ResourceDictionary, так что...
<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>
Команды на верхнем уровне VehicleViewModel работают.
Кто-нибудь испытал что-нибудь подобное? Это порядок, в котором я делаю вещи? Любая помощь с благодарностью!
Ваше здоровье,
Энди