0

我需要一个按钮式菜单,即水平排列的一组始终可见的按钮。
像单选按钮一样,它们应该有一个selected属性,即 click-command 应该仅在选定状态更改为 true 时触发,而不是像普通按钮那样在每次单击时触发。

4

3 回答 3

2

伙计,这是 WPF,您可以使用任何符合您的某些或任何要求的控件,然后简单地为其提供一个新控件ControlTemplate。顺便说一句,没有SelectedIsSelected财产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
    }
}
于 2013-10-15T08:27:43.020 回答
1

RadioButton也像其他按钮Click在每次点击时触发事件一样。上也没有 Selected 属性RadioButton

但是,如果您希望自己MenuItemsButton,那么您可以ToggleButton在这里使用。 ToggleButton具有IsChecked跟踪按钮的选中状态的属性,以及在选中Checked时触发的事件ToggleButton

此外,如果您想在单击其他 ToggleButton 时自动选中/取消选中您的 ToggleButtons,那么您可以使用您的RadioButton并覆盖它,如下所示:DataTemplateMenuItemTemplate

      <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>
于 2013-10-15T08:26:58.877 回答
0

事实证明,在 WrapPanel 中具有水平布局的 ListBox非常适合我的场景。我在另一个问题中发布了解决方案。

于 2013-10-24T20:38:58.230 回答