【问题标题】:XAML and Binding Submenu items in a ContextMenu?ContextMenu 中的 XAML 和绑定子菜单项?
【发布时间】:2011-07-03 21:56:10
【问题描述】:

我在 Datagrid 上定义了一个 ContextMenu,但想将子菜单项绑定到我的视图模型上的集合。任何人都可以建议如何做到这一点?

以下是我想要实现的一个简单示例,但我希望“Test1”、“Test2”来自我的视图模型上的集合,而不是硬编码。我知道如何将我的集合绑定到整个 ContextMenu,但不知道如何将它绑定到一个子菜单...

<ContextMenu>
    <MenuItem Header="Add to">
        <MenuItem Header="Test1" />
        <MenuItem Header="Test2" />
    </MenuItem>
    <MenuItem Header="Remove from All" />
</ContextMenu>

我使用的是 3.5 SP1 和 WPF 工具包。

【问题讨论】:

    标签: wpf xaml wpf-controls


    【解决方案1】:

    我想我应该做更多的实验。事实证明这是相对简单的:

    <my:DataGrid.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Add to" ItemsSource="{Binding MyItems}">
                <MenuItem.ItemTemplate>
                    <DataTemplate>
                        <MenuItem CommandTarget="{Binding}" Click="AddClick">
                            <MenuItem.Header>
                                <TextBlock>
                                <TextBlock.Text><Binding StringFormat="Add to {0}" /></TextBlock.Text>
                                </TextBlock>
                            </MenuItem.Header>
                        </MenuItem>
                    </DataTemplate>
                </MenuItem.ItemTemplate>
            </MenuItem>
            <MenuItem Header="Remove from All" />
        </ContextMenu>
    </my:DataGrid.ContextMenu>
    

    【讨论】:

      【解决方案2】:

      使用 MenuItem.ItemTemplate 时存在错误。将鼠标悬停在子菜单上时的颜色使用户误解他们可以单击以选择菜单,但即使突出显示,它也不适用于所有区域。看图

      然后我改用这段代码,它对我来说很好。

      <ContextMenu>
          <MenuItem Header="Add to" ItemsSource="{Binding MyItems}" 
                    DisplayMemberPath="{Binding ItemName}">
             <MenuItem.ItemContainerStyle>
                 <Style>
                    <EventSetter Event="MenuItem.Click" Handler="Menu_Click"/>
                 </Style>
              </MenuItem.ItemContainerStyle>
          </MenuItem>
          <MenuItem Header="Remove from All" />
      </ContextMenu>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-04
        • 2016-02-29
        • 1970-01-01
        • 2023-03-27
        相关资源
        最近更新 更多