0

我使用控件模板以一种简单的方式更改按钮的外观。它现在看起来不同了,但不像一个按钮。确实有两个问题:

  1. 按钮的命令永远不会执行
  2. 点击按钮后,它显示为选中(即椭圆变成了丑陋的蓝色矩形)

这是一般的想法:

<Button Command="{x:Static commands:...}"
        CommandParameter="{Binding}">
    <Button.Template>
        <ControlTemplate TargetType="Button">
            <Ellipse Fill="{Binding ...}"
                     .../>
        </ControlTemplate>
    </Button.Template>
</Button>
4

3 回答 3

2
  1. 没有理由发生这种情况。我使用 ApplicationCommands.Copy 进行了测试,并且该命令很好地触发了。可能是你CommandBinding的工作不正常。
  2. 基于复制您的示例 XAML 并仅设置Fill="Green". 您可以尝试FocusVisualStyle="{x:Null}"Button.
于 2009-11-11T18:04:07.563 回答
1

问题原来Fill是绑定到一个可能为空的值。如果Fill画笔为空而不是透明,则没有可单击的内容并且命令不会被执行。正如 Drew 所提到的,使用实心填充,按钮可以正常工作。

外卖课程:如果您想隐藏您的形状但仍让它响应用户交互,请使用透明画笔,而不是空画笔。

于 2009-11-11T20:14:03.580 回答
0

我对自定义模板按钮有类似的问题:

     <my:UniButton Command="{Binding MyCommand}"/>

直到添加一个 RelativeSource,绑定才起作​​用:

     <my:UniButton Command="{Binding MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:CustomPanel}}"/>

其中 CustomPanel 是我的按钮所在的控件。

Withal 我在同一个面板上有一个简单的按钮,但即使没有 RelativeSource,它也能正常工作。

于 2014-04-03T13:26:00.083 回答