c# - wpf 在转换器属性更改时更新绑定属性
问题描述
我有一个 TextBlock,它有一个与 MultiBinding 绑定的 Foreground 属性,如下所示:
<TextBlock.Foreground>
<MultiBinding Converter="{StaticResource BlToBrshConv1}">
<Binding Path="SomePropertyOfOwnerClass" />
<Binding Path="AnotherProperty"/>
</MultiBinding>
</TextBlock.Foreground>
转换器 BlToBrshConv1 如下:
Class BlToBrshConv1
Implements IMultiValueConverter
Property InheritedBrush as Brush
Public Function Convert(values() As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IMultiValueConverter.Convert
Try
Dim b1 As Boolean = CBool(values(0))
Dim b2 As Boolean = CBool(values(1))
If b1 = True AndAlso b2 = True Then
' Return SomeBrush0
ElseIf b1 Then
' Return SomeBrush1
Else
Return InheritedBrush
End If
Catch ex As Exception
Return InheritedBrush
End Try
现在我的问题是当转换器本身的属性“InheritdBrush”时,我需要更新“前景”画笔。
前景画笔不会更新,因为绑定的属性(“SomePropertyOfOwnerClass”和“AnotherProperty”)没有改变。
有任何想法吗?
解决方案
您可以使用触发器更改绑定。
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding Defaultbrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding SomePropertyOfOwnerClass}">
<Setter Property="Foreground" Value="{Binding SomeBrush1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding AnotherProperty}">
<Setter Property="Foreground" Value="{Binding InheritedBrush}"/>
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding SomePropertyOfOwnerClass}" Value="True"/>
<Condition Binding="{Binding AnotherProperty}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="Foreground" Value="{Binding SomeBrush0}"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
推荐阅读
- nginx - 使用 .cer 和 .key 文件在 HAProxy 中终止 SSL
- swift - Swift如何在系统启动之前更改从firebase(FCM)收到的通知标题和正文?
- c - C中全局和局部指针变量的内存段分配
- android - 无法使用 android-volley 从 JSON 数组中获取数据到自定义列表视图中
- r - 如何将 xts 时间序列转换为 00:00:00 的小时差
- swift - 当我在 SwiftUI 中使用 Timer 时,为什么我的应用程序会崩溃?
- python-3.x - 获取中间信息。来自纸浆
- ios - 如何在 NavigationLink 中为目标视图重用视图模型实例
- javascript - Laravel:注册表格打开时会话到期
- npm - 如何修复 npm 运行