2010-11-28 77 views
1

我有一个实现INotifyPropertyChanged并具有属性SelectedTopicDescription的用户控件,我试图将textbox Text属性绑定到此公共属性。我知道该属性正在改变,但文本框没有被更新。Silverlight将文本属性绑定到UserControl的公共属性问题

我尝试了很多东西,我知道这应该很容易。

我已经尝试在UserControl xaml中使用以下datacontext,但它没有效果。我已阅读关于依赖性的性质,但不应该通过使用INotifyPropertyChanged来做到这一点?

您的帮助表示赞赏。

的DataContext = “{结合的RelativeSource = {的RelativeSource自}}”

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” 文本= “{结合SelectedTopicDescription}” 的Horizo​​ntalAlignment = “左”>

+0

您是否试图直接在代码中分配DataContext? – 2010-11-28 23:32:23

回答

2

当在UserControl中绑定具有该UserControl属性的元素时,用DataContext摆弄它可能不是一个好主意。而是直接通过的BindingElementName属性绑定到用户控件,像这样: -

<TextBox Text="{Binding Parent.SelectedTopicDescription, ElementName=LayoutRoot, Mode=TwoWay}" /> 

它使用一个事实,即在用户控制的Content元素的名称为“LayoutRoot”而这又是一个FrameworkElementParent财产将是UserControl

0

模式=双向,在数据绑定XAML表达

相关问题