MainWindow に複数のビューを持つグリッドが含まれている MVVM アプリケーションがあります。
ビューモデルの 1 つに、対応するビューでホット キーを使用してアクティブにできるコマンドがあります。特定のビューを含む MainWindow の一部に配置されている場合にのみ、コマンドをアクティブにすることができます。
特定のビューでコマンドを有効にしたいだけの場合、次のコードは正常に機能します。
ComponentView.xaml:
...
<UserControl.InputBindings>
<KeyBinding Gesture="CTRL+U" Command="{Binding Path=UploadCmd}"/>
</UserControl.InputBindings>
</UserControl>
MainWindow の任意の部分からホット キーを使用してコマンドをアクティブにできるようにしたいと考えています。
これは、コマンドをどこからでもアクティブにできるように、MainWindow でキーバインドを実行しようとして失敗したものです。
MainWindow.xaml:
<Window x:Class="MyProgram.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:MyProgram.View"
xmlns:vm="clr-namespace:MyProgram.ViewModel"
...>
<Grid>
// Grid content
</Grid>
<Window.DataContext>
<vm:ComponentViewModel>
<KeyBinding Gesture="CTRL+U" Command="{Binding Path=UploadCmd}"/>
</vm:ComponentViewModel>
</Window.DataContext>
</Window>
コマンドが xaml のどこに直接あるかをアプリケーションに知らせることはできますか?