wpf触发器的优先级是怎么回事?
这段代码,IsPressed被IsFocused覆盖了。当不设置IsFocused的时候,按按钮就没问题,当设置了IsFocused的时候,IsPressed就没法触发了。请问这个该如何解决?--------------------编程问答-------------------- 补充一下,点击按钮的时候,它不变色,也不知道IsPressed到底触发过没有。 --------------------编程问答-------------------- 人们呢? --------------------编程问答-------------------- 这个是事件触发顺序的问题的,同时定义两个IsPressed其实是触发了的,只是IsPressed触发时设置的颜色又被IsFocused事件触发时修改过来了,因为IsPressed事件发生在IsFocused事件之前,具体可以参考MSDN焦点的介绍:
<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>
http://msdn.microsoft.com/zh-cn/library/vstudio/aa969768.aspx --------------------编程问答-------------------- 我先去看看,谢谢啦 --------------------编程问答--------------------
问题是我现在需要在focused状态下一种背景色,然后pressed按下的时候还要改变一下背景色,这个在xaml里面应该如何处理呢?是不是不能处理? --------------------编程问答-------------------- 求助啊,亲们 --------------------编程问答-------------------- --------------------编程问答-------------------- <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> --------------------编程问答--------------------
<Button HorizontalAlignment="Left" Template="{StaticResource MenubuttonTemplate}" Content="确定" Margin="28,211,0,0" Name="button1" VerticalAlignment="Top" FontSize="14" Click="button1_Click" /> --------------------编程问答--------------------
那可以用代码来设置下的,在键盘按下事件中注销掉获取焦点事件,设置颜色完之后在注册获取焦点事件
补充:.NET技术 , C#