質問

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}" … />

実際にバインドしようとしているオブジェクトなどを報告する必要があります。実行中に出力ウィンドウをチェックして、そのバインドで何が行われているかを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top