我正在尝试实现一个可以增强WPF的DataBinding引擎的系统。
我现在主要关注的是:
我希望能够“冻结”DependencyProperty - 一旦用户开始在UI中输入内容,就停止从模型更新。
考虑以下示例: 我将TextBox.TextProperty绑定到我的ViewModel上的某个属性。
用户开始在文本框中输入内容,当他开始输入时,我想阻止ViewModel更新视图。
只有在提交更改后,用户才会在模型中看到更新。
我正在尝试使用bool-flag创建某种MultiBinding,它会告诉我是否需要更新GUI,但除此之外我不知道如何继续。
任何帮助将不胜感激!
答案 0 :(得分:0)
您可以通过在绑定中将UpdateSourceTrigger设置为PropertyChanged,然后在有界属性的setter中相应地设置标志。 PropertyChanged value立即更新绑定源,因为用户将输入任何字符。
XAML
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"/>
视图模型
public class ViewModel:INotifyPropertyChanged
{
bool stopUpdate;
string name;
public string Name
{
get
{ return name;}
set
{
name = value;
stopUpdate=true;
OnPropertyChanged("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}