gpt4 book ai didi

c# - UpdateSourceTrigger=PropertyChanged 和转换器

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

我有一个简单的 Converter,它向 TextBox 中输入的正数添加一个“+”符号。输入数字后,我想启动一些操作,但我不想等到 TextBox 失去焦点:我想在用户输入文本时立即更新绑定(bind)。

TextBox 的默认行为是,当用户离开文本框时,绑定(bind)源会更新 (UpdateSourceTrigger=LostFocus)。在这种情况下,我的转换器按预期工作,并添加了 +。但是,当我将其更改为以下内容时,从未 添加 +。

<TextBox Text="{Binding Value, Converter={StaticResource PlusConverter}, UpdateSourceTrigger=PropertyChanged}" />

我可以想象我的 converter.Convert() 方法没有被调用是有充分理由的。我希望有以下行为:

  1. 当用户输入文本时,源会立即更新
  2. TextBox 失去焦点时,添加 +。

现在我正在寻找一种不错的,但特别是通用的方式来执行此操作(因为我的应用程序中有很多这样的文本框)。到目前为止,我还没有想出合适的解决方案。

最佳答案

同意 Kent B,您需要发布您的转换器代码。

我已经能够让第 1 部分使用一个简单的转换器(我正在绑定(bind)第二个未转换的 TextBlock 以表明该值确实正在更新)。

但是,如果我理解您的第 2 部分,您正试图让 TextBox 的文本在失去焦点后更新为“+”。这有点棘手,我认为您无法仅使用 IConverter 来完成。如果可以的话,我也很想知道答案。

您本质上要求的是带水印的输入行为,例如允许用户输入一些数据,并使其正确格式化(在底层 DataBinding 和 UI 中)。最快/最肮脏的解决方案是处理 TextBoxes 的 LostFocus,但由于您在整个应用程序中都在使用它,因此这可能不可行。

您还可以考虑将 TextBox 包装在您自己的 UserControl 中。如果您查看 DatePicker 的 WPFToolkit 实现,它具有类似的行为:允许用户输入自由格式的文本,然后将该值自动转换为 DateTime(如果有效)并以本地化格式显示 DateTime。

HTH.

关于c# - UpdateSourceTrigger=PropertyChanged 和转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987120/

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