gpt4 book ai didi

.net - 在样式中混合 MultiBinding 转换器和触发器时出现问题

转载 作者:行者123 更新时间:2023-12-04 00:23:08 26 4
gpt4 key购买 nike

<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}">  

预期结果适用于字段 FirstName当 MultiBinding 转换器将背景颜色更改为红色时,要获得焦点并将前景色更改为白色,但是,当字段的背景更改为红色时,它既没有获得焦点,也没有获得新的前景色。

似乎 XAML 解析器处理触发器 之前 属性 setter 的 MultiBinding 转换器。

欢迎任何和所有建议!

最佳答案

我认为Red在触发器和 Red 中指定的画笔转换器返回的画笔不被视为相等(因为它们是不同的实例),因此触发器永远不会执行。无论如何,依靠背景颜色来触发某些事情似乎不是一个好主意......

您应该更改转换器,使其在发生错误时返回 true,并按如下方式使用它:

<Style x:Key="FieldToValidate" TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<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>
</DataTrigger.Binding>
<Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource self}}" />
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>

此外,在您的转换器名称中,您可能指的是“视觉 提示 ”,而不是“ 队列” ;)

关于.net - 在样式中混合 MultiBinding 转换器和触发器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5902351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com