gpt4 book ai didi

c# - 如果字符串值不相等,如何更改 TextBlock 的背景颜色?

转载 作者:行者123 更新时间:2023-11-30 21:09:05 25 4
gpt4 key购买 nike

我有一个只有两个 TextBlock 的 UserControl:

<UserControl [...] x:Name="root">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Text1, ElementName=root}" />
<TextBlock Text="{Binding Text2, ElementName=root}" />
</StackPanel>
</UserControl>

相应的代码隐藏如下所示:

public static readonly DependencyProperty Text1Property = DependencyProperty.Register("Text1", typeof(String), typeof(CmpText)); 
public static readonly DependencyProperty Text2Property = DependencyProperty.Register("Text2", typeof(String), typeof(CmpText));

public string Text1
{
get { return (string)GetValue(Text1Property); }
set { SetValue(Text1Property, value); }
}

public string Text2
{
get { return (string)GetValue(Text2Property); }
set { SetValue(Text2Property, value); }
}

这就是我在 MainWindow.xml 中使用此 UserControl 的方式:

<local:CmpText Text1="{Binding Password1}" Text2="{Binding Password2}" />

我基本上想要的是第二个 TextBlock 的背景,如果 Text1 和 Text2 不相等,则将其颜色更改为红色。

我尝试在代码隐藏中使用辅助属性:

public bool IsEqual { get { return Text1 == Text2; } }

并将第二个TextBlock的样式设置为

<Style TargetType="{x:Type TextBlock}"> 
<Style.Triggers>
<DataTrigger Binding="{Binding IsEqual, ElementName=root}" Value="True">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>

但是,即使 Text1 和 Text2 属性不匹配,IsEqual 始终为“真”(并且 TextBlock 的背景始终为红色)。我认为我的辅助属性“IsEqual”比较了 Text1 和 Text2 的默认值,它们恰好为 NULL(我无法确认这一点,因为我无法调试 GUI)。所以 IsEqual 的评估似乎发生在我的文本属性被分配任何值之前。我希望在分配文本属性后 进行评估。

我不知道怎么办。你能帮忙吗?

最佳答案

目前 WPF 无法发现 IsEqual 已更改,因此不会重新评估绑定(bind)。

你可以做三件事:

  1. 使 IsEqual 成为另一个依赖属性并添加 PropertyChangedCallback s 到 Text1Text2,只要它们发生变化,就会更新 IsEqual

  2. 或者,实现 INotifyPropertyChanged并在 Text1Text2 PropertyChangedCallbacks 中为 IsEqual 引发 PropertyChanged 事件。

  3. 或者,使用 MultiBinding结合 IMultiValueConverter将背景属性直接绑定(bind)到 Text1Text2。转换器将获得两个字符串作为输入并返回一个 Brush。

关于c# - 如果字符串值不相等,如何更改 TextBlock 的背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233548/

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