我有一个具有NotesViewModel子ViewModel的VehicleViewModel
public IManageVehicleNotesViewModel NotesViewModel { get; set; }
在第一次激活VehicleViewModel时,我激活了子ViewModel。
NotesViewModel.Activate();
激活调用一个方法来初始化一些命令,我已经断了这个并且它被调用了。
CreateCommand = new DelegateCommand<object>(OnCreateCommand, CanCreate);
然而,虽然TextBoxes绑定在子视图上(因此DataContext已到位)没有任何命令是绑定的 - 我试图在命令上调用RaiseCanExecuteChanged但它们不禁用,启用或调用方法如预期的那样。
我不知道它是否相关(因为TextBoxes是绑定的)但是我正在使用ResourceDictionary将View和ViewModel关联起来......
<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上的命令工作。
有没有人经历过这样的事情?这是我正在做的事情吗?任何帮助都感激不尽!
干杯,
安迪
答案 0 :(得分:2)
CreateCommand
属性是否会触发PropertyChanged
事件?如果没有,则在分配时不会通知用户界面...
尝试使用Snoop之类的工具来检查按钮的Command
属性是否已设置
答案 1 :(得分:0)
执行此操作并检查输出以查看发生的情况:
<UserControl …
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase" />
<Button Command="{Binding MyCommand,
diagnostics:PresentationTraceSources.TraceLevel=High}" … />
它应该报告它实际尝试绑定的对象,等等。在运行时检查输出窗口,看看该绑定发生了什么。