gpt4 book ai didi

c# - 在自定义文本框中检测 PropertyChanged

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:42 25 4
gpt4 key购买 nike

我已经实现了自定义 TextBox:

public class MyTextBox : TextBox
{
// ...
}

我从 XAML 使用:

<MyTextBox Text="{Binding MyProperty}" />

并且它绑定(bind)到我的 ViewModel 中的一个属性。

public class MyDataContext : INotifyPropertyChanged
{
public string MyProperty
{
get { return _myPropertyBackingField; }
set
{
_myPropertyBackingField = value;
PropertyChanged(this, new PropertyChangedEventArgs("MyProperty"));
}
}

// ...
}

问题:如何在 MyTextBox 中检测到 MyProperty 已更改?

MyProperty = "NewValue";

最好,我想将程序更改与用户编辑值触发更改的时间区分开来。也就是说,我不认为重写 OnPropertyChanged 对我有用。

最佳答案

您可以注册到 TextBoxDataContextPropertyChanged 事件。

var dataContext = DataContext as MyDataContext;
dataContext.PropertyChanged += dataContext_PropertyChanged;

// check for the propertyname and react
void dataContext_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "MyProperty")
{
// Do things
}
}

因此,如果您的 View 模型引发 PropertyChanged,您的文本框也会收到通知。但我认为这是不好的做法。你想达到什么目的?

关于c# - 在自定义文本框中检测 PropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832889/

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