<Window x:Class="WPF熊俊.MainWindow"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="306" Width="542">
    <Window.Resources>
        <Style TargetType="Button">           
            <Style.Triggers>
                <Trigger Property="IsPressed" Value="true">
                    <Setter Property = "Content" Value="熊俊"/>
                </Trigger>                
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid Height="187" Name="grid1" Width="359">
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="92,87,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="192,125,0,0" Name="button2" VerticalAlignment="Top" Width="75" />
    </Grid>
</Window>
设置当IsPressed为ture时,Button的内容改变,但是,当我点击button的时候,为什么没有反应呢?哪里出错了呢?

解决方案 »

  1.   

    因为你在定义Button的时候定义了Content="Button". 我们可以称之为本地设置。
    而本地设置值的应用优先级要高于样式触发器。所以你的样式触发器中的值就没有起作用。你可以做个实验:
    <Window.Resources>
            <Style TargetType="Button">       
                <Setter Property="Content" Value="Default"/>    
                <Style.Triggers>
                    <Trigger Property="IsPressed" Value="true">
                        <Setter Property = "Content" Value="熊俊"/>
                    </Trigger>                
                </Style.Triggers>
            </Style>
        </Window.Resources>
        <Grid Height="187" Name="grid1" Width="359">
            <Button Height="23" HorizontalAlignment="Left" Margin="92,87,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
            <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="192,125,0,0" Name="button2" VerticalAlignment="Top" Width="75" />
        </Grid>用上面的代码你就可以看到,第一个Button的内容可以改变了。但第二个是不可以的。
      

  2.   

     <Style TargetType="{x:Type Button}" BasedOn="{x:Null}" x:Key="Button">
                <Setter Property="BorderBrush" Value="#FFD0D1D7"/>
               
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                            <Grid x:Name="grid" Width="Auto">
                                <Border x:Name="Border" Width="Auto"  Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"/>                            <Image   Margin="20,0,0,0"  Width="18" Height="18" HorizontalAlignment="Left" />
                                <ContentPresenter Margin="{TemplateBinding Padding}"  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" x:Name="ContentPresenter" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"  RecognizesAccessKey="True" />                        </Grid>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="true">
                                    <Setter Property="BorderBrush" TargetName="Border" Value="#FF1EA0F9"/>
                                    <Setter Property = "Background" Value="#FFE5F0F9" TargetName="Border"/>
                                    <Setter Property="Cursor" Value="Hand" />
                                </Trigger>
                                <Trigger Property="IsPressed" Value="true">
                                    <Setter Property = "Background" TargetName="Border">
                                        <Setter.Value>
                                            <SolidColorBrush Color="#FFAAD7F7" Opacity="0.6"/>
                                        </Setter.Value>
                                    </Setter>
                                    <Setter Property="BorderBrush" Value="#FF85BCE2" TargetName="Border"/>
                                </Trigger>                            <Trigger Property="IsEnabled" Value="False">
                                    <Setter Property="Foreground" Value="{x:Null}"/>                            </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>要这样才能触发