【发布时间】:2011-08-19 15:06:38
【问题描述】:
在<UserControl.Resources> 中设置样式(假设转换器返回红色)
<Style x:Key="FieldToValidate" TargetType="{x:Type TextBox}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource VisualQueueOnErrorConverter}">
<Binding RelativeSource="{RelativeSource self}" Path="Name" />
<Binding RelativeSource="{RelativeSource AncestorType={x:Type DockPanel}}" Path="DataContext.ErrorFieldName" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" />
</MultiBinding>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Background" Value="Red">
<Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource self}}" />
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
和控制:
<TextBox Name="FirstName" Text="{Binding FirstName}" Style="{StaticResource FieldToValidate}">
预期结果是当 MultiBinding 转换器将背景颜色更改为红色时,字段 FirstName 获得焦点并且前景色更改为白色,但是当字段的背景更改为红色时,它没有获得焦点也不是新的前景色。
XAML 解析器似乎在属性设置器的 MultiBinding 转换器之前处理触发器。
欢迎提出任何建议!
【问题讨论】:
标签: .net xaml triggers multibinding