c# - WPF MVVM数据绑定(bind)文本框依赖覆盖输入或不更新输入

标签 c# wpf mvvm

这必须是解决此问题的常见问题,但我找不到它。
我需要能够在文本框中设置一个值,但文本框通常由外部源(在本例中为 PLC)更新。当它从源更新时,我想在文本框中显示更新的值(而不是在用户键入时)而不调用从依赖属性的 setter 调用的方法。

我有一个绑定(bind)到 View 模型 xaml 代码中的依赖属性的基本文本框。

<TextBox Text="{Binding A}" />

该属性(property)看起来像这样
private string _a;
public string A
get
        {
            return _a;
        }
        set
        {
            if (value != _a)
            {
                Set(ref _a, value);
                SomeMethod(value);
            }
        }

从这里我尝试更新该字段
_a = ValueFromAnotherSource;

除非我运行,否则不会更新 View
RaisePropertyChanged(String.Empty);

在这种情况下,如果值更新,则会覆盖用户输入时的输入。

或者我可以写信给酒店
A = ValueFromAnotherSource;

但是 SomeMethod(value) 被调用,这不是我想要的,只有当用户在屏幕上键入的值发生更改时才应该调用它

最佳答案

我敢肯定,编码标准神会为此而责备我:

private string _a;
private bool _manuallySettingA;
public string A
{
    get { return _a; }
    set
    {
        if (value != _a)
        {
            Set(ref _a, value);
            if(!_manuallySettingA)
                SomeMethod(value);
        }
    }
}

public void ManuallySetA(string value)
{
    _manuallySettingA = true;
    A = value;
    _manuallySettingA = false;
}

关于c# - WPF MVVM数据绑定(bind)文本框依赖覆盖输入或不更新输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54579214/

相关文章:

c# - 在不预览的情况下打印 WebBrowser,即单击打印

c# - 在 C# 中相当于 Ruby "redo"

c# - mvvmlight wpf 如何提高框架源属性 wpf c#

wpf - 列表框在选择时更改图像

c# - 修改控件模板时保留控件的主题风格

android - 最佳实践 : Runtime filters with Room and LiveData

c# - 使用 SSL 从 C# 应用程序调用 WebService

c# - 多线程流文档

wpf - WPF 中使用的模式

c# - EventToCommand 无法添加到 TriggerActionCollection