WPF-Sub ViewModelでのMVVMコマンドバインディング
質問
NotesViewModelのサブViewModelを持つVehicleViewModelがあります
public IManageVehicleNotesViewModel NotesViewModel { get; set; }
VehicleViewModelの最初のアクティブ化で、サブViewModelをアクティブ化します。
NotesViewModel.Activate();
アクティベーションは、多くのコマンドを初期化するメソッドを呼び出します。これと、呼び出されていることを指摘しました。
CreateCommand = new DelegateCommand<object>(OnCreateCommand, CanCreate);
ただし、TextBoxはサブビューにバインドされていますが(DataContextは所定の位置にあります)、コマンドはどれもバインドされていません-コマンドでRaiseCanExecuteChangedを呼び出そうとしましたが、メソッドを無効化、有効化、または呼び出しません期待どおり。
関連するかどうかはわかりませんが(TextBoxがバインドされているため)、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のコマンドが機能します。
このようなことを経験した人はいますか?それは私が物事をやっている順序ですか?助けてくれてありがとう!
乾杯、
アンディ
解決
CreateCommand
プロパティは PropertyChanged
イベントをトリガーしますか?割り当てられていない場合、UIは割り当て時に通知されません...
スヌープなどのツールを使用して、 Command
プロパティがボタンの設定
他のヒント
これを実行し、出力をチェックして何が起こっているかを確認します。
<UserControl …
xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase" />
<Button Command="{Binding MyCommand,
diagnostics:PresentationTraceSources.TraceLevel=High}" … />
実際にバインドしようとしているオブジェクトなどを報告する必要があります。実行中に出力ウィンドウをチェックして、そのバインドで何が行われているかを確認します。
所属していません StackOverflow