gpt4 book ai didi

wpf - 如何撤消由绑定(bind)引起的 TextBox 的文本更改?

转载 作者:行者123 更新时间:2023-12-03 15:07:50 31 4
gpt4 key购买 nike

我有一个 TextBox我绑定(bind)了一个字符串,如果我现在手动编辑文本,我将能够通过 TextBox.Undo() 撤消这些更改,但是如果我更改了字符串并且更新了 TextBox 的文本,我将无法撤消这些更改并且 TextBox.CanUndo属性将始终为 false .
我想这可能与完全替换文本而不是修改它有关。

关于如何让它发挥作用的任何想法?

最佳答案

我遇到了同样的问题(需要在 Enter 时接受输入并在 Escape 时恢复为原始值)并且能够以这种方式处理它:

  • 设置 UpdateSourceTrigger您的TextBox.Text绑定(bind)到 Explicit .
  • 拉手KeyDown TextBox 的事件并将以下代码放入其中:
    if (e.Key == Key.Enter || e.Key == Key.Escape)
    {
    BindingExpression be = ((TextBox)sender).GetBindingExpression(TextBox.TextProperty);

    if (e.Key == Key.Enter)
    {
    if (be != null) be.UpdateSource();
    }
    else if (e.Key == Key.Escape)
    {
    if (be != null) be.UpdateTarget(); //cancels newly supplied value and reverts to the original value
    }
    }

  • 我发现这个解决方案非常优雅,因为它也可以在 DataTemplates 中使用。例如,在我的例子中,我使用它来允许对 ListBox 项目进行就地编辑。

    关于wpf - 如何撤消由绑定(bind)引起的 TextBox 的文本更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476282/

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