Caliburn.Micro を使用した .NET 4.0 アプリケーションがあります。メニュー項目ごとに XAML コードを記述する必要がないように、動的メニューを作成したいと考えています。さらに、各コマンドをキー ジェスチャに関連付けたいと考えています。
私はインターフェースIActionを持っています:
public interface IAction
{
string Name { get; }
InputGesture Gesture { get; }
ICommand Command { get; }
}
私の ViewModel では、IActions のリストを公開しています。
private List<IAction> _actions;
public List<IAction> Actions
{
get { return _actions; }
set
{
_actions = value;
NotifyOfPropertyChange(()=> Actions);
}
}
次のように、ツールバーをアクションにバインドします。
<ToolBar>
<Menu ItemsSource="{Binding Actions}">
<Menu.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Name}" />
<Setter Property="Command" Value="{Binding Command}" />
</Style>
</Menu.ItemContainerStyle>
</Menu>
</ToolBar>
上記のすべての作品。
私が見逃しているのは、キージェスチャーのデータバインディングです。
どこを読んでも、次のような Window.InputBindings の静的定義を含む例しか見つかりません。
<Window.InputBindings>
<KeyBinding Key="B" Modifiers="Control" Command="ApplicationCommands.Open" />
</Window.InputBindings>
Window.InputBindings を ItemsControl に単純にカプセル化できれば素晴らしいことですが、うまくいきません。
Window.InputBindings を動的にバインドする方法を知っている人はいますか?
ありがとう!