我需要一个按钮式菜单,即水平排列的一组始终可见的按钮 与radiobuttons一样,它们应该具有选择的属性,即只有当选择状态变为true时才会触发click-command,而不是像普通按钮那样在每次点击时触发。< / p>
答案 0 :(得分:2)
老兄,这是WPF,您可以使用任何符合您或您的任何要求的控件,然后只为它提供一个新的ControlTemplate
。顺便说一下,Selected
上没有IsSelected
或RadioButton
属性...也许您指的是IsChecked
属性?此属性继承自ToggleButton
,因此可能更合适。
由于ToggleButton
已经是Button
,您甚至可以在不提供新ControlTemplate
的情况下离开。
至于您对Click
事件的要求,我认为您不会在任何WPF控件上找到该功能,但可以手动实现:
private void Button_Click(object sender, RoutedEventArgs e)
{
if (ToggleButton.IsChecked == true)
{
// Do something here when the `Button.IsChecked` == true
}
}
答案 1 :(得分:1)
RadioButton
也像其他按钮一样在每次点击时触发Click
事件。此外,RadioButton
上没有选定的属性。
但是,如果您希望MenuItems
与Button
类似,那么您可以在此使用ToggleButton
。
ToggleButton
具有IsChecked
属性,用于跟踪已检查状态的按钮以及Checked
被检查时触发的ToggleButton
事件。
此外,如果您想在点击其他ToggleButton时自动选中/取消选中您的ToggleButton,那么您可以RadioButton
使用DataTemplate
MenuItem
并覆盖其Template
如下所示:
<RadioButton Content="MyRadio" Click="RadioButton_Click">
<RadioButton.Template>
<ControlTemplate TargetType="RadioButton">
<ToggleButton Checked="ToggleButton_Checked" IsChecked="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}}" Content="{TemplateBinding Content}"/>
</ControlTemplate>
</RadioButton.Template>
</RadioButton>
答案 2 :(得分:0)
事实证明,WrapPanel中的ListBox with a horizontal layout非常适合我的场景。 我在another question发布了解决方案。