Silverlight绑定文本框TextCon属性为UserControl的公共属性问题

时间:2010-11-28 21:42:48

标签: silverlight

我有一个实现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}”                          的Horizo​​ntalAlignment = “左” >

2 个答案:

答案 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表达式