2010-11-28 8 views
1

Ich habe ein Benutzersteuerelement, das INotifyPropertyChanged implementiert und eine Eigenschaft SelectedTopicDescription hat, und ich versuche, eine Textfeldtexteigenschaft an diese öffentliche Eigenschaft zu binden. Ich weiß, dass sich die Eigenschaft ändert, die Textbox wird jedoch nicht aktualisiert.Silverlight Binding Textbox Texteigenschaft für die öffentliche Eigenschaft von UserControl Problem

Ich habe eine Reihe von Dingen ausprobiert und ich weiß, das sollte einfach sein.

Ich habe versucht, mit dem folgenden Datenkontext innerhalb der UserControl XAML, aber es hatte keine Wirkung. Ich habe über Abhängigkeitseigenschaften gelesen, aber sollte ich dies nicht mit INotifyPropertyChanged tun können?

Ihre Hilfe wird geschätzt.

Datacontext = "{Binding Relative = {Relativeselbst}}"

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)); 
    } 

...

Die Textbox ist .. width = "200" Margin = "141,142,0,153" Text = "{Binding SelectedTopicDescription}" Horizontal = "left">

+0

Haben Sie versucht, DataContext direkt im Code zuzuweisen? –

Antwort

2

Es ist wahrscheinlich keine gute Idee, mit DataContext herumzubasteln, wenn Elemente in einem Usercontrol mit Eigenschaften dieses UserControls verbunden werden. Statt direkt auf die Usercontrol über die ElementName Eigenschaft Binding die Bindung, wie folgt aus: -

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

Dies nutzt die Tatsache, dass das Content Element in der Benutzersteuerung ist der Name „LayoutRoot“ hat und das wiederum ein Wesen FrameworkElement hat eine Parent Eigenschaft, die die UserControl sein wird.

0

Mode = TwoWay, an der Databinding XAML Ausdruck