2010-11-28 5 views
1

J'ai un contrôle utilisateur qui met en œuvre INotifyPropertyChanged et a une SelectedTopicDescription propriété et je suis en train de lier une zone de texte propriété Text à cette propriété publique. Je sais que la propriété est en train de changer, mais la zone de texte n'est pas mise à jour.Silverlight Reliure Textbox propriété Text à la propriété publique de UserControl Problème

J'ai essayé un certain nombre de choses et je sais que cela devrait être facile.

J'ai essayé d'utiliser la datacontext suivante dans le XAML UserControl mais il n'a eu aucun effet. J'ai lu à propos des propriétés de dépendance, mais ne devrais-je pas être en mesure de le faire en utilisant INotifyPropertyChanged?

Votre aide est appréciée.

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

...

La zone de texte est .. width = "200" Marge = "141,142,0,153" Text = "{} SelectedTopicDescription Reliure" HorizontalAlignment = "left">

+0

Avez-vous essayé d'assigner DataContext directement dans le code? –

Répondre

2

Il est sans doute pas une bonne idée de bricoler avec DataContext lorsque des éléments de fixation dans un Usercontrol avec les propriétés du UserControl que. Au lieu de cela diriger la liaison au UserControl via la propriété ElementName de Binding, comme ceci: -

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

Il utilise le fait que l'élément Content dans le contrôle de l'utilisateur est a le nom « LayoutRoot » et que, à son tour être un FrameworkElement a une propriété Parent qui sera le UserControl.

0

mode = TwoWay, à l'expression DataBinding XAML

Questions connexes