这段代码,IsPressed被IsFocused覆盖了。当不设置IsFocused的时候,按按钮就没问题,当设置了IsFocused的时候,IsPressed就没法触发了。请问这个该如何解决?<Trigger SourceName="btnHead" Property="IsPressed" Value="True">
                    <Setter TargetName="itemBackground" Property="Background" Value="#92C0E0"/>
                    <Setter TargetName="itemBackground" Property="BorderBrush" Value="#92C0E0"/>
                </Trigger>
                <Trigger SourceName="btnHead" Property="IsFocused" Value="True">
                    <Setter TargetName="itemBackground" Property="Background" Value="#E6F2FA"/>
                    <Setter TargetName="itemBackground" Property="BorderBrush" Value="#B1D6F0"/>
                </Trigger>
                <Trigger SourceName="btnHead" Property="IsMouseOver" Value="True">
                    <Setter TargetName="itemBackground" Property="Background" Value="#CDE6F7"/>
                    <Setter TargetName="itemBackground" Property="BorderBrush" Value="#CDE6F7"/>
                </Trigger>

解决方案 »

  1.   

    补充一下,点击按钮的时候,它不变色,也不知道IsPressed到底触发过没有。
      

  2.   

    这个是事件触发顺序的问题的,同时定义两个IsPressed其实是触发了的,只是IsPressed触发时设置的颜色又被IsFocused事件触发时修改过来了,因为IsPressed事件发生在IsFocused事件之前,具体可以参考MSDN焦点的介绍:
    http://msdn.microsoft.com/zh-cn/library/vstudio/aa969768.aspx
      

  3.   

    问题是我现在需要在focused状态下一种背景色,然后pressed按下的时候还要改变一下背景色,这个在xaml里面应该如何处理呢?是不是不能处理?
      

  4.   

      <ControlTemplate x:Key="MenubuttonTemplate" TargetType="{x:Type Button}">
                <Grid>
                    <Rectangle x:Name="outRect" Fill="{Binding RelativeSource={RelativeSource TemplatedParent}, 
                                     Path=Background }" Visibility="Visible">
                    </Rectangle>
                    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="{TemplateBinding Padding}" Text="{TemplateBinding Content}"
                               FontFamily="{Binding RelativeSource={RelativeSource TemplatedParent}, 
                                     Path=FontFamily }"
                    FontSize="{Binding RelativeSource={RelativeSource TemplatedParent}, 
                                     Path=FontSize }"  />
                    <Path  x:Name="BorderPath" Stroke="{Binding RelativeSource={RelativeSource TemplatedParent}, 
                                     Path=BorderBrush }" StrokeThickness="1" >
                        <Path.Data>
                            <PathGeometry>
                                <PathFigure StartPoint="0,29">
                                    <PathFigure.Segments  >
                                        <LineSegment   Point="0,0"/>
                                        <LineSegment   Point="82,0"/>
                                        <LineSegment   Point="82,29"/>
                                    </PathFigure.Segments>
                                </PathFigure>
                            </PathGeometry>
                        </Path.Data>
                    </Path>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger     Property="Button.IsPressed"     Value="True">
                        <Setter Property="Button.Background" Value="#92C0E0"/>
                        <Setter Property="Button.BorderBrush" Value="#92C0E0"/>
                    </Trigger>
                    <Trigger  Property="Button.IsFocused" Value="True">
                        <Setter  Property="Button.Background" Value="#E6F2FA"/>
                        <Setter  Property="Button.BorderBrush" Value="#B1D6F0"/>
                    </Trigger>
                    <Trigger  Property="Button.IsMouseOver" Value="True">
                        <Setter  Property="Button.Background" Value="#CDE6F7"/>
                        <Setter Property="Button.BorderBrush" Value="#CDE6F7"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
      

  5.   

            <Button  HorizontalAlignment="Left"  Template="{StaticResource MenubuttonTemplate}"  Content="确定"     Margin="28,211,0,0" Name="button1" VerticalAlignment="Top"    FontSize="14" Click="button1_Click" />
      

  6.   

    问题是我现在需要在focused状态下一种背景色,然后pressed按下的时候还要改变一下背景色,这个在xaml里面应该如何处理呢?是不是不能处理?
    那可以用代码来设置下的,在键盘按下事件中注销掉获取焦点事件,设置颜色完之后在注册获取焦点事件