代码之家  ›  专栏  ›  技术社区  ›  Eric

设置ischeckable似乎可以防止子菜单出现

  •  0
  • Eric  · 技术社区  · 15 年前

    我正在尝试将IsChecked绑定到我显示的对象上选定的DependanCyroperty,此代码似乎有效,但如果使用它,子菜单将不显示。这是正确的方法吗?我该如何解决问题?

    <MenuItem Header="Window" Name="windowMenu" ItemsSource="{Binding}">
        <MenuItem.ItemContainerStyle>
            <Style>
                 <Setter Property="MenuItem.IsChecked" Value="{Binding Path=Selected}" />
                 <Setter Property="MenuItem.IsCheckable" Value="true" />
            </Style>
        </MenuItem.ItemContainerStyle>
    </MenuItem>
    
    1 回复  |  直到 15 年前
        1
  •  0
  •   Szymon Rozga    15 年前

    快速测试显示,如果将MenuItem的IsCheckable属性设置为true,则不会显示其子项。

        <Menu>
            <MenuItem Header="File">
                <MenuItem Header="Exit" />
            </MenuItem>
            <MenuItem Header="Tools">
                <MenuItem Header="Options" IsCheckable="True">
                    <MenuItem Header="one" IsCheckable="True" />
                    <MenuItem Header="two" IsCheckable="True" />
                </MenuItem>
            </MenuItem>
        </Menu>
    

    在上面的示例中,选项将没有子项显示。

    编辑:这种情况的原因是,从用户体验的角度来看,这不是真正有意义的情况。我能想到的唯一情况是检查一个项目,它检查了它的所有子项目,但是我想你最好使用复选框来检查它。

    重新定义ControlTemplate当然是一个选项。Blend通常可以告诉您它的默认控件模板是什么,您可以从那里开始。