gpt4 book ai didi

c# - 应用于文本框的文本属性的 DataTrigger 导致其绑定(bind)停止工作

转载 作者:行者123 更新时间:2023-11-30 22:01:51 25 4
gpt4 key购买 nike

我的 TextBox 上有一个功能绑定(bind),它充当搜索栏。但是,当我添加应用于同一绑定(bind)(第一个触发器)的以下触发器时,它会停止绑定(bind)。

  <TextBox>
<TextBox.Style>
<Style TargetType="TextBox">
<Setter Property="Text" Value="{Binding Path=SearchFilterString, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Style.Triggers>
<!-- 1st trigger -->
<DataTrigger Binding="{Binding Path=SearchFilterString}" Value="">
<Setter Property="Text" Value="Type in part name to search."/>
</DataTrigger>
<!-- 2nd trigger -->
<Trigger Property="IsFocused" Value="true">
<Setter Property="Text" Value="{x:Null}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>

我还包含了第二个触发器,以确保在我解决第一个触发器的问题后它不会造成无限循环的情况。所以也请对那个发表评论。

这两个触发器的目的是在 TextBox 中显示一些指导线来描述这个文本框是关于什么的,一旦 TextBox 获得焦点和用户,指导线就会消失尝试输入搜索关键字。如果您认为有更好的方法来做同样的事情,请告诉我。

最佳答案

您的绑定(bind)将不起作用,因为您正在使用触发器的 setter 覆盖它:您将其 Text 属性设置为一个值,同时将相同的 Text 属性绑定(bind)到 View 模型。这两件事不能同时起作用。

本质上,您正在尝试在文本框上创建称为“水印”的东西。我特别喜欢下面的解决方案,因为它不会修改 TextBox 本身,而是在它上面放置一个装饰器:

Watermark Behavior for TextBox

关于c# - 应用于文本框的文本属性的 DataTrigger 导致其绑定(bind)停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392083/

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