C# WPF/XAML按钮.模板

C# WPF/XAML按钮.模板,c#,wpf,xaml,C#,Wpf,Xaml,我有点困惑。这不是什么大问题,但有人能解释为什么会这样吗 <Button Command="{Binding CancelButtonClickCommand}" DockPanel.Dock="Right" Height="16" Width="16"> <Button.Template> <ControlTemplate> <Grid Background="{Binding CancelImage}"/> &l

我有点困惑。这不是什么大问题,但有人能解释为什么会这样吗

<Button Command="{Binding CancelButtonClickCommand}" DockPanel.Dock="Right" Height="16" Width="16">
<Button.Template>
    <ControlTemplate>
        <Grid Background="{Binding CancelImage}"/>
    </ControlTemplate>
</Button.Template>

工作,当这个

<Button Command="{Binding CheckButtonClickCommand}" DockPanel.Dock="Left" Height="16" Width="16">
<Button.Template>
    <ControlTemplate>
        <Image Source="{Binding CheckImage}"/>
    </ControlTemplate>
</Button.Template>

不是吗? 不同之处在于,我在第一个代码中使用了
,在不起作用的代码中使用了
。 在后一种情况下,图像是不可见的,我甚至不调用命令

提前多谢
/C

Grid.Background绑定到
画笔
类型,而Image.Source需要
ImageSource
。解决这个问题的最简单方法是在CheckImage绑定中公开笔刷的
ImageSource
属性。如果不可能,您也可以将转换器连接到图像。源绑定并从绑定到的画笔返回ImageSource。

CheckImage是有效的ImageSource吗?@Lennart CheckImage和CancelImage都是ImageBrush类型Swell,这就是问题所在。Grid.Background需要一个笔刷作为类型(在您的情况下可以使用),而Image.Source需要一个ImageSource(它不工作,因为您不能隐式地从ImageBrush转换)。@Lennart。但是当然。谢谢!干杯