醉酒的Silverlight-按钮背景的纯色背景颜色显示它与梯度效果

时间:2013-10-01 08:47:03

标签: wpf silverlight silverlight-4.0 silverlight-5.0

VS2012>>新的Silverlight项目>>

<UserControl x:Class="SilverlightApplication2.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" >
        <Button Background="Red" />
    </Grid>
</UserControl>
  • silverlight按钮默认模板有所改变..我如何重置并恢复到默认模式?
  • WPF按钮背景正常
  • 只有按钮问题,现在其他控件没有此问题

enter image description here

2 个答案:

答案 0 :(得分:1)

就像@Alex所说,渐变是Button使用的模板的结果。无论您将背景设置为什么颜色,它都会显示渐变。

更改此方法的一种方法是将模板修改为@Alex建议。

另一种方法是将Button的内容设置为Grid,然后将Grid设置为您想要的任何纯色。

<Button Height="100" Click="OnClick" Width="100">
            <Button.Content>
                <Grid Height="100" Width="100" IsHitTestVisible="False" Background="Blue"/>
            </Button.Content>
        </Button>

答案 1 :(得分:0)

这一切都取决于按钮的模板。我猜测默认模板顶部有一些模拟半透明着色或其他类似的层。用更简单的模板替换控件模板,它应该工作。您可以在MSDN上找到默认模板,您只需修改按钮一,而不是从头开始:http://msdn.microsoft.com/en-us/library/cc278069(v=vs.95).aspx

具体来说,我猜这部分是渐变:

<Border x:Name="Background" CornerRadius="3" Background="White" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
    <Grid Background="{TemplateBinding Background}"  Margin="1">
        <Border Opacity="0"  x:Name="BackgroundAnimation" Background="#FF448DCA" />
        <Rectangle x:Name="BackgroundGradient" >
            <Rectangle.Fill>
                <LinearGradientBrush StartPoint=".7,0" EndPoint=".7,1">
                    <GradientStop Color="#FFFFFFFF" Offset="0" />
                    <GradientStop Color="#F9FFFFFF" Offset="0.375" />
                    <GradientStop Color="#E5FFFFFF" Offset="0.625" />
                    <GradientStop Color="#C6FFFFFF" Offset="1" />
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
     </Grid>
</Border>