哪个wpf控件最适合这个菜单场景?

时间:2013-10-15 08:07:44

标签: wpf menu user-controls

我需要一个按钮式菜单,即水平排列的一组始终可见的按钮 与radiobuttons一样,它们应该具有选择的属性,即只有当选择状态变为true时才会触发click-command,而不是像普通按钮那样在每次点击时触发。< / p>

3 个答案:

答案 0 :(得分:2)

老兄,这是WPF,您可以使用任何符合您或您的任何要求的控件,然后只为它提供一个新的ControlTemplate。顺便说一下,Selected上没有IsSelectedRadioButton属性...也许您指的是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上没有选定的属性。

但是,如果您希望MenuItemsButton类似,那么您可以在此使用ToggleButtonToggleButton具有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发布了解决方案。