将菜单项绑定到一个集合,使它们可以检查并设置

时间:2016-08-04 19:17:53

标签: wpf xaml

我想将菜单的子项绑定到一个集合,然后能够设置它们的样式并使它们可以通过单选按钮的方式进行选择(一次只能选择一个)。这就是我到目前为止所拥有的

<MenuItem Header="League" Style="{StaticResource MenuItemStyle}" ItemsSource="{Binding AvailableLeagues}">
            <MenuItem.ItemContainerStyle>
                <Style>
                    <Setter Property="MenuItem.Header"
          Value="{Binding InAppName}" />
                </Style>
            </MenuItem.ItemContainerStyle>
        </MenuItem>

到目前为止,集合中的所有项目都可以作为menuitems显示。但是我不能对他们应用一种风格,我无法使它们可以检查。 &#34; MenuItemStyle&#34;仅适用于外部菜单项,但不适用于子项。

我是否必须将外部menuitem的弹出窗口重新定义为radiobuttons列表(不知道如何做到这一点)或者是否有菜单项的解决方案? Thx提前

1 个答案:

答案 0 :(得分:0)

此方法以递归方式将样式应用于MenuItem及其所有子项及其子项:

<MenuItem Header="Main Menu Item">
    <MenuItem Header="Unaffected Sibling" />

    <MenuItem Header="Foo">
        <MenuItem.Resources>
            <Style TargetType="MenuItem">
                <Setter Property="MenuItem.Header" Value="{Binding InAppName}" />
                <Setter Property="IsCheckable" Value="True" />
                <Setter Property="IsChecked" Value="{Binding IsSomeRandomBoolProperty}" />

                <Setter Property="Background" Value="YellowGreen" />
                <Setter Property="FontWeight" Value="Bold" />
                <Setter Property="Foreground" Value="Red" />
            </Style>
        </MenuItem.Resources>
        <MenuItem Header="Bar" />
        <MenuItem Header="I Am Damo Suzuki">
            <MenuItem Header="Blah blah blah">
                <MenuItem Header="Amon Duul II" />
            </MenuItem>
        </MenuItem>
    </MenuItem>
</MenuItem>