J'ai créé un contrôle personnalisé dans WPF et je n'arrive pas à le lier correctement. Si je définis explicitement la valeur de la propriété dans le code, tout fonctionne correctement.Problème de liaison WPf
Voici le XAML pour le TextBox
dans mon contrôle:
<TextBox Name="txtText" Grid.Row="0" Grid.Column="0" IsReadOnly="True" Text="{Binding Text, Mode=OneWay}" />
et les propriétés pertinentes du code sont à l'origine comme suit:
public static readonly DependencyProperty TextConverterProperty = DependencyProperty.Register("TextConverter", typeof(IValueConverter), typeof(Selector));
public static readonly DependencyProperty EntityIdProperty = DependencyProperty.Register("EntityId", typeof(long), typeof(Selector));
public string Text
{
get
{
string result = this.EntityId.ToString();
if (this.TextConverter != null)
{
result = this.TextConverter.Convert(result, null, null, null) as string;
}
return result;
}
}
public long EntityId
{
get
{
return (long)this.GetValue(EntityIdProperty);
}
set
{
this.SetValue(EntityIdProperty, value);
this.OnPropertyChanged("Text");
this.OnPropertyChanged("EntityId");
}
}
public IValueConverter TextConverter
{
get
{
return this.GetValue(TextConverterProperty) as IValueConverter;
}
set
{
this.SetValue(TextConverterProperty, value);
}
}
Et maintenant la mise en œuvre de XAML dans ma page:
<controls:Selector x:Name="txtReferringCase" EntityId="{Binding ReferringDACaseId}" TextConverter="{StaticResource daCaseNumberConverter}" Grid.Column="5" Grid.Row="0" Grid.ColumnSpan="3" ButtonClicked="txtReferringCase_ButtonClicked" />
Maintenant, voici la partie étrange. Je peux régler la DataContext pour la page et rien ne se passe, mais quand je décommenter la ligne commentée, le texte apparaît dans mon contrôle utilisateur sans problème:
_caseScreen = new DACaseScreen(itemId);
this.DataContext = _caseScreen;
//this.txtReferringCase.EntityId = _caseScreen.ReferringDACaseId;
EDIT: Une autre chose que j'oublié de mentionner .. Si j'atteins un point d'arrêt et que je vérifie les propriétés EntityId et Text du contrôle, ils affichent tous les deux les valeurs auxquelles je m'attendrais. Il semble que l'interface utilisateur ne soit pas mise à jour.
Que pensez-vous qu'il arrivera lorsque vous modifierez 'DataContext'? – Jon