J'ai un contrôle utilisateur doté d'une zone de texte. J'ai essayé d'exposer la propriété Text de texbox en implémentant un DependencyProperty avec le même nom dans le UserControl. Ainsi:Exception Cast non valide lors de la tentative de conversion d'une propriété d'un contrôle utilisateur dans une liaison
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text",
typeof(string),
typeof(UserControlWithTextBox),
new UIPropertyMetadata(string.Empty));
public string Text
{
get { return (string)GetValue(TextProperty); }
set
{
SetValue(TextProperty, value);
textBox.Text = value;
}
}
La partie get semble fonctionner dans mon application. Cependant, j'ai essayé de lier la propriété IsEnabled d'un bouton à la propriété Text de deux de ces UserControls à l'aide d'un convertisseur qui vérifiera si les propriétés TextControls des deux UserControls sont des chaînes vides. Je reçois l'erreur suivante lorsque la fenêtre de l'application charge:
System.InvalidCastException was unshandled Message = "Impossible de convertir un objet de type MS.Internal.NamedObject en type System.String."
La méthode Convert semble donc:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return (string) values[0] != string.Empty &&
(string) values[1] != string.Empty;
}
valeurs [0] et les valeurs [1] ont tous deux la valeur DependencyProperty.UnsetValue lorsque l'exception est levée.
Où est-ce que je me suis trompé?
Merci. Le problème était beaucoup plus simple que je ne le pensais. J'ai oublié de renommer le ElementName = "MyUserControlInstance" après avoir renommé l'instance UserControl lui-même ... – Dabblernl
Parfois, ce sont les petites choses qui vous rendent fou ... oh, je rigole tout le temps .. :) –