これは、ルーティングコマンドが機能する場合のようです。ルーテッドコマンドの場合、トールバーボタンのコマンドを「保存」に設定します。次に、ユーザーコントロールで、「保存」コマンドを待機するコマンドバインディングを追加します。 bindingコマンドのコードビハインドのイベントハンドラで
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.CommandBindings>
<CommandBinding
Command="Save"
CanExecute="SaveCommand_CanExecute"
Executed="SaveCommand_Executed"
/>
</UserControl.CommandBindings>
</UserControl>
、ただのviewmodelを見つけて、それののviewmodelにsaveコマンドを呼び出します。より純粋なMVVMアプローチを望むなら、Josh Smith's approach to routed commands with MVVMを試すことができます。
ユーザーコントロールにフォーカスがある限り、保存ボタンの保存コマンドはユーザーコントロールのコマンドバインディングにルーティングし、保存コマンドを実行します。
これは、ContentPresenterの動的に読み込まれたユーザーコントロールからツールバーボタンを切り離すことを目的としていると思います。
こんにちは@seekle、私は明示的にユーザーコントロールを宣言していない場合は、代わりに、それらを読み込み、ViewModelでContentControlを使用します。どのようにして、ジェネリックの親が「ある種の」viewModelがそのイベントをリスンしていることを「知っている」ようにすることができますか?ありがとうございます –