首页新闻找找看学习计划

wpf 触发器为什么没效果

0
悬赏园豆:5 [已解决问题] 解决于 2014-09-26 17:00

如下:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    
    <Window.Resources>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="FontSize" Value="36"></Setter>
                    <Setter Property="Background" Value="Red"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    
    <Grid>
        <Button Background="Green"   Content="Hight Value" x:Name="btnVisible"  Margin="250,154,167,114" />
    </Grid>
</Window>

定义一个style 里面有个触发器当IsPressed为ture的时候(按钮按下)  设置字体大小和背景颜色

但是实际运行效果为什么 点击后字体变了而背景颜色却没有呢?

s_p的主页 s_p | 菜鸟二级 | 园豆:269
提问于:2014-09-15 11:19
< >
分享
最佳答案
0

   <Window.Resources>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border Background="{TemplateBinding Background}" Name="BkgBorder">
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="BkgBorder" Property="Background" Value="Red"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="Background" Value="Red"/>
                    <Setter Property="FontSize" Value="32"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>
        <Button   Background="Green" Content="Hight Value" x:Name="btnVisible"  Margin="250,154,167,114" />

    </Grid>

收获园豆:3
醉心 | 初学一级 |园豆:99 | 2014-09-24 17:45
其他回答(2)
0

除非重写Button的Template, 不然这个背景颜色是该不了的

收获园豆:1
Yu | 园豆:12944 (专家六级) | 2014-09-15 12:08
0

事件:ispressed是什么状态?从字面理解是:按下状态。

那么,你检测这个是否是在按下状态呢?比如,你是长按按钮没效果还是点按呢?

简单的实验了下,长按下是有字体大小效果的,只是背景颜色的效果没有,估计是被over事件覆盖了。

收获园豆:1
519740105 | 园豆:5810 (大侠五级) | 2014-09-15 18:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册