依赖属性:在用户提交之前'冻结'DataBinding

时间:2014-08-17 12:15:13

标签: wpf xaml data-binding dependency-properties

我正在尝试实现一个可以增强WPF的DataBinding引擎的系统。

我现在主要关注的是:

我希望能够“冻结”DependencyProperty - 一旦用户开始在UI中输入内容,就停止从模型更新。

考虑以下示例: 我将TextBox.TextProperty绑定到我的ViewModel上的某个属性。

用户开始在文本框中输入内容,当他开始输入时,我想阻止ViewModel更新视图。

只有在提交更改后,用户才会在模型中看到更新。

我正在尝试使用bool-flag创建某种MultiBinding,它会告诉我是否需要更新GUI,但除此之外我不知道如何继续。

任何帮助将不胜感激!

1 个答案:

答案 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));
        }