WPF文本框文本更新

时间:2017-01-05 13:36:17

标签: c# wpf xaml

(我知道有关于此的问题,但正如您在我的问题中所看到的,我认为我尝试了解决方案但没有成功)。

简单地说,我正在尝试将文本框中的文本与视图模型绑定。

视图模型中的代码:

public class MainClass :INotifyPropertyChanged
{
 ... 
public event PropertyChangedEventHandler PropertyChanged;         
protected void onPropertyChanged ​(string propertyName)   
{
    var handler = PropertyChanged;
    if (handler != null) {
        handler(this,  new PropertyChangedEventArgs(propertyName));
    } 
}
private string _Stuff ="Original Value";
public string Stuff {
    get { return _Stuff;  }
    private set {
        if (value != _Stuff)
        {
            _Stuff = value;
            Method();
            OnPropertyChanged("Stuff");
        }
    }
}
}

和XAML

<TextBox Text="{Binding Stuff,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
</TextBox>

现在,绑定确实有一种方式 - 也就是说,首次初始化XAML时,文本框中会填充“原始值”。但是当我更改框中的值时(即使我失去了对它的关注),该字段也不会更新(我可以说,因为,首先,不调用Method,而且当我使用调试器时,我可以看到价值没有改变。)

我做错了什么?

编辑:我忘了提到上下文是在控制器中设置的,并且显然正在工作,因为正如我所说,绑定是单向工作的。

1 个答案:

答案 0 :(得分:3)

你的问题可能就在这里:

public string Stuff {
    get { return _Stuff;  }
    private set {
        if (value != _Stuff)
        {
            _Stuff = value;
            Method();
            OnPropertyChanged("Stuff");
        }
    }
}

您的二传手是private,请移除private,它应该有效。