获取模板化按钮的命令

时间:2009-11-11 15:10:03

标签: wpf xaml controltemplate

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

  1. 永远不会执行按钮的命令
  2. 点击按钮后,它显示为已选中(即椭圆变成丑陋的蓝色矩形)
  3. 以下是一般概念:

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

3 个答案:

答案 0 :(得分:2)

  1. 没有理由这样做。我使用ApplicationCommands.Copy组合了一个测试并且命令被解雇了。可能是您的CommandBinding无法正常工作。
  2. 我也没有看到这是基于复制样本XAML而只是设置Fill="Green"。您可以尝试在FocusVisualStyle="{x:Null}"上设置Button

答案 1 :(得分:1)

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

外卖课:如果你想隐藏你的形状但仍然让它响应用户互动,请使用透明刷,而不是空刷。

答案 2 :(得分:0)

我在自定义模板化按钮上遇到了类似的问题:

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

绑定在添加RelativeSource之前不起作用:

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

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

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