菜单项只有一个选中的值

时间:2016-07-08 12:16:18

标签: c# wpf xaml menu menuitem

我希望在我的应用程序中有一个上下文菜单" DefaultPrinter"它有一些绑定的孩子(另一个MenuItems)代表打印机的名字。每个孩子都有一个属性IsCheckable设置为true。

<MenuItem Header="DefaultPrinter" ItemsSource="{Binding AllPrinters}">
     <MenuItem.ItemContainerStyle>
          <Style TargetType="{x:Type MenuItem}">
              <Setter Property="IsCheckable" Value="True"/>
          </Style>
     </MenuItem.ItemContainerStyle>
</MenuItem>

但是,我当然希望只允许检查一台打印机(此代码不支持该打印机)。我在互联网上寻找解决方案,但没有找到任何有用的东西。 问题是来自MenuItem的{​​{1}}个人,因为它没有项目选择的概念(如ItemsControl)。我可以尝试编写自己的选择,但首先,我想知道是否有更好,更简单的解决方案来实现这一目标。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

可以滥用隐藏的RadioButton

<MenuItem.ItemTemplate>
    <DataTemplate>
        <Grid>
            <RadioButton GroupName="Printers"
                    IsChecked="{Binding IsChecked, RelativeSource={RelativeSource AncestorType=MenuItem}}"
                    Visibility="Collapsed"/>
            <TextBlock Text="{Binding FullName}"/>
        </Grid>
    </DataTemplate>
</MenuItem.ItemTemplate>