日期:2014-05-18  浏览次数:20852 次

WPF button小问题
随便拽一个button进工程里,想实现button 在IsMouseOver的时候,底色不变,请问如何搞,我在属性触发器里添加了相应的代码,设置Background为透明,但是button上面还是罩了一层颜色。请大家解惑:
样式代码:
C# code

<Style x:Key="BtnExample" TargetType="Button">
        <Setter Property="Background">
            <Setter.Value>
                <ImageBrush ImageSource="/EnvrimentConfig;component/Images/get.ico" />
            </Setter.Value>               
        </Setter>
        <Style.Triggers>           
        <Trigger Property="Button.IsMouseOver" Value="True">
                <Setter Property="Button.Background" Value="Transparent" >
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>


XAML下代码:
C# code

 <Button  Height="96" Style="{StaticResource BtnExample}"  HorizontalAlignment="Left" Margin="170,12,0,0" Name="button3" VerticalAlignment="Top" Width="90" Grid.RowSpan="2">




------解决方案--------------------
http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/abff631a-9d6e-407e-8b78-90ea186c1e7b
------解决方案--------------------
你在xp就会下发现,你说的那种情况不会存在的
因为你用了随主题
进入 Expression Blend 4
然后创建一个最原始的button 就行了。
或者对系统自带button控件点右键选择修改模板,
把里面不需要的动画效果都去掉
------解决方案--------------------
这个需要重写Button Template
参考http://msdn.microsoft.com/en-us/library/ms753328(v=vs.85).aspx
这个是默认的template
------解决方案--------------------
win7的Button是由ButtonChrome和ContentPresenter控件组成,ButtonChrome 提供标准按钮外观,而ContentPresenter显示按钮的内容,你可以把ButtonChrome替换成一个矩形,用来充当按钮的主体,修改矩形的触发器就可以达到你说背景不变的效果。至于360的效果你可以再添加一个大一点的矩形,把透明度调成0,然后再触发器里改变透明度就是你说的鼠标悬浮时,半透明矩形在上面。

http://blog.csdn.net/cmis7645/article/details/7562833