我希望在我的应用程序中有一个上下文菜单" 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
)。我可以尝试编写自己的选择,但首先,我想知道是否有更好,更简单的解决方案来实现这一目标。
任何帮助将不胜感激。
答案 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>