WPF按钮背景

时间:2013-12-02 15:04:31

标签: c# wpf button

当控件被禁用时,图像背后的背景变为灰色,当我将鼠标悬停在其上时,图像背后的背景也会突出显示。 我该如何防止这种情况发生?

XMAL

<Button x:Name="btnSubmitCase" Content="Button" Canvas.Left="87" Canvas.Top="326" Background="{x:Null}" Margin="136,409,409,50" BorderThickness="0" Cursor="Hand" Click="btnSubmitCase_Click">
        <Button.Template>
            <ControlTemplate>
                <Button HorizontalAlignment="Center" VerticalAlignment="Center" Background="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0">
                    <Image Source="Resources/CaseButton.png"/>
                </Button>
            </ControlTemplate>
        </Button.Template>
    </Button>

2 个答案:

答案 0 :(得分:2)

我不知道您为什么要在Button ControlTemplate内放置Button 而不是仅仅使用此XAML:

<Button HorizontalAlignment="Center" VerticalAlignment="Center" Background="{x:Null}" 
    BorderBrush="{x:Null}" BorderThickness="0">
    <Image Source="Resources/CaseButton.png" />>
</Button>

然而,不是你的问题,只有一个简单的答案......只是不要将Button放入ControlTemplate

<Button x:Name="btnSubmitCase" ...>
    <Button.Template>
        <ControlTemplate>
            <Image Source="Resources/CaseButton.png" />
        </ControlTemplate>
    </Button.Template>
</Button>

您正在描述的行为内置于ControlTemplate控件的默认Button。要删除它,只需定义自己的ControlTemplate

答案 1 :(得分:1)

按钮的默认模板包括在悬停,按下或禁用按钮时覆盖外观的触发器。 (如果在Blend中编辑默认主题,可以检查Xaml。)

为了防止出现这种情况,您需要完全覆盖模板 - 您当前所做的只是使用包含图像的另一个按钮覆盖本地按钮的模板。这方面的一个例子是对你已经完成的事情的简单调整:

<Button x:Name="btnSubmitCase" Content="Button" Canvas.Left="87" Canvas.Top="326" Background="{x:Null}" Margin="136,409,409,50" BorderThickness="0" Cursor="Hand" Click="btnSubmitCase_Click">
        <Button.Template>
            <ControlTemplate>
                <Image Source="Resources/CaseButton.png"/>
            </ControlTemplate>
        </Button.Template>
    </Button>

请注意,这将删除所有按钮的边框和其他状态更改行为,实际上只是渲染可点击的图像。