<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的时候,为什么没有反应呢?哪里出错了呢?
而本地设置值的应用优先级要高于样式触发器。所以你的样式触发器中的值就没有起作用。你可以做个实验:
<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的内容可以改变了。但第二个是不可以的。
<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>要这样才能触发