0

メニューとメニューアイテムをロードする次のXAMLものがありますが、コマンド/入力ジェスチャーを使用せずにバインドする方法はありStackPanelますか? CmdParamコマンドを持つVMのプロパティです。最初は以下のようにリソースセクションに設定しようと思ったのですが、コマンドが表示されません

<Window>  
    <Window.Resources>        
        <Style TargetType="{x:Type MenuItem}" x:Key="menuSeparatorStyle">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type MenuItem}">
                        <Separator HorizontalAlignment="Stretch" IsEnabled="false"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>

            <Setter Property="InputGestureText" Value="{Binding CmdParam}"/>
        </Style>      

    <HierarchicalDataTemplate DataType="{x:Type projectBusinessLayer:MenuDataItem}">

        <ContentPresenter Content="{Binding Path=MenuText}" Loaded="OnMenuDataItemLoaded" RecognizesAccessKey="True" />

        <HierarchicalDataTemplate.ItemsSource>
            <Binding Path="MenuItemID">
                <Binding.Converter>
                    <converters:MenuDataItemConverter />
                </Binding.Converter>
            </Binding>
        </HierarchicalDataTemplate.ItemsSource>
    </HierarchicalDataTemplate>

    <projectBusinessLayer:MenuSeparatorStyleSelector x:Key="menuSeparatorStyleSelector"/>
</Window.Resources>

<DockPanel>
    <Menu x:Name="mnuMainMenu" ItemsSource="{Binding}" VerticalAlignment="Top" DockPanel.Dock="Top" ItemContainerStyleSelector="{StaticResource menuSeparatorStyleSelector}"/>
</DockPanel>

4

1 に答える 1

1

あなたが動的に何を意味するのか完全には理解できませんが、どうですか...

<Window.InputBindings>
    <KeyBinding Key="F7" Command="{Binding CmdParam}" />
</Window.InputBindings>

ビューモデル:

private ICommand _cmdParam;
public ICommand CmdParam
{
      get
      {
          if (_cmdParam== null)
             _cmdParam= new DelegateCommand(DoSomething);
           return _cmdParam;
      }
}

private void DoSomething(object obj)
{
}
于 2013-06-10T13:13:31.950 に答える