我有一个实现INotifyPropertyChanged的用户控件,并且有一个属性SelectedTopicDescription,我正在尝试将文本框Text属性绑定到此公共属性。我知道属性正在改变,但文本框没有更新。
我尝试了很多事情,我知道这应该很容易。
我尝试在UserControl xaml中使用以下datacontext但它没有任何效果。我已经阅读了有关依赖性的内容,但是我不能通过使用INotifyPropertyChanged来做到这一点吗?
感谢您的帮助。
DataContext =“{Binding RelativeSource = {RelativeSource Self}}”
public partial class CodePage : UserControl ,INotifyPropertyChanged{
private string _selectedTopicDescription = string.Empty;
public string SelectedTopicDescription {
get { return _selectedTopicDescription; }
set {
_selectedTopicDescription = value;
OnPropertyChanged("SelectedTopicDescription");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string property) {
PropertyChangedEventHandler ph = this.PropertyChanged;
if (ph != null)
ph(this, new PropertyChangedEventArgs(property));
}
...
文本框是.. 宽度=“200”保证金=“141,142,0,153” Text =“{Binding SelectedTopicDescription}” 的HorizontalAlignment = “左” >
答案 0 :(得分:2)
当UserControl中的元素与UserControl的属性绑定时,使用DataContext
摆弄可能不是一个好主意。而是通过ElementName
的{{1}}属性将绑定指向UserControl,如下所示: -
Binding
这使用了以下事实:用户控件中的<TextBox Text="{Binding Parent.SelectedTopicDescription, ElementName=LayoutRoot, Mode=TwoWay}" />
元素名称为“LayoutRoot”,而Content
的{{1}}属性为FrameworkElement
属性{ {1}}。
答案 1 :(得分:0)
Mode = TwoWay,在DataBinding XAML表达式