2010-11-28 74 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表達

相關問題