Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 获取模板化按钮';他被命令工作_Wpf_Xaml_Controltemplate - Fatal编程技术网

Wpf 获取模板化按钮';他被命令工作

Wpf 获取模板化按钮';他被命令工作,wpf,xaml,controltemplate,Wpf,Xaml,Controltemplate,我使用了一个控件模板来以一种简单的方式更改按钮的外观。它现在看起来不同了,但不像按钮。实际上有两个问题: 按钮的命令永远不会执行 单击按钮后,它显示为选中状态(即,椭圆变为难看的蓝色矩形) 以下是总体思路: <Button Command="{x:Static commands:...}" CommandParameter="{Binding}"> <Button.Template> <ControlTemplate Targ

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

  • 按钮的命令永远不会执行
  • 单击按钮后,它显示为选中状态(即,椭圆变为难看的蓝色矩形)
  • 以下是总体思路:

    <Button Command="{x:Static commands:...}"
            CommandParameter="{Binding}">
        <Button.Template>
            <ControlTemplate TargetType="Button">
                <Ellipse Fill="{Binding ...}"
                         .../>
            </ControlTemplate>
        </Button.Template>
    </Button>
    
    
    
  • 没有理由这样。我使用ApplicationCommands.Copy编写了一个测试,命令很好地启动了。可能是您的
    CommandBinding
    工作不正常
  • 基于复制示例XAML并仅设置
    Fill=“Green”
    ,我也没有看到这一点。您可以尝试在
    按钮上设置
    FocusVisualStyle=“{x:Null}”
  • 没有理由这样。我使用ApplicationCommands.Copy编写了一个测试,命令很好地启动了。可能是您的
    CommandBinding
    工作不正常
  • 基于复制示例XAML并仅设置
    Fill=“Green”
    ,我也没有看到这一点。您可以尝试在
    按钮上设置
    FocusVisualStyle=“{x:Null}”

  • 问题是
    Fill
    绑定到了一个可以为null的值。如果
    Fill
    画笔是空的而不是透明的,那么就没有什么可点击的,命令也不会执行。如Drew所述,使用实心填充时,按钮工作正常


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

    问题是
    Fill
    绑定到一个可能为空的值。如果
    Fill
    画笔是空的而不是透明的,那么就没有什么可点击的,命令也不会执行。如Drew所述,使用实心填充时,按钮工作正常


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

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

         <my:UniButton Command="{Binding MyCommand}"/>
    
    
    
    在添加RelativeSource之前,绑定不起作用:

         <my:UniButton Command="{Binding MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:CustomPanel}}"/>
    
    
    
    其中CustomPanel是按钮所在的控件


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

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

         <my:UniButton Command="{Binding MyCommand}"/>
    
    
    
    在添加RelativeSource之前,绑定不起作用:

         <my:UniButton Command="{Binding MyCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=my:CustomPanel}}"/>
    
    
    
    其中CustomPanel是按钮所在的控件

    我在同一个面板上有一个简单的按钮,但即使没有相关的资源,它也能正常工作