当控件被禁用时,图像背后的背景变为灰色,当我将鼠标悬停在其上时,图像背后的背景也会突出显示。 我该如何防止这种情况发生?
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>
答案 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>
请注意,这将删除所有按钮的边框和其他状态更改行为,实际上只是渲染可点击的图像。