2009-04-03 7 views
0

Je reçois une erreur d'exécution lorsque j'utilise DataBinding et cela me rend fou. J'ai un UserControl simple que j'ai défini, appelons-le SillyControl. Par ailleurs, j'ai une collectionLa liaison à un UserControl provoque ManagedRuntimeError

ObservableCollection<MyClass> myObjects; 

et un ListBox appelé SillyListBox qui est lié à cette ObservableCollection via: SillyListBox.ItemsSource = myObjects; Le ListBox est défini en XAML comme si:

<ListBox x:Name="SillyListBox"> 
<ListBox.ItemTemplate> 
    <DataTemplate> 
    <MyControls:SillyControl TestString="{Binding Name}" /> 
    </DataTemplate> 
</ListBox.ItemTemplate> 
</ListBox> 

Ainsi, chaque fois qu'un objet est ajouté Pour la collection myObjects, un nouveau SillyControl doit être ajouté à ListBox et la propriété TestString de SillyControl doit être liée à la propriété Name de l'objet MyClass qu'elle représente.

Cela ne fonctionne pas. Il compile bien, mais quand je lance le programme, il me donne une erreur d'exécution méchant - System.Windows.Markup.XamlParseException et en dessous de ce quelque chose qui dit AG_E_PARSER_BAD_PROPERTY_VALUE.

Maintenant, si je supprime simplement la liaison, donnez à TestString une valeur fixe, par exemple, l'erreur disparaît. Il est également possible pour moi de définir un contrôle TextBlock au lieu d'un SillyControl et d'utiliser la liaison avec succès. Qu'est-ce qui fait que cela arrive?

Mise à jour: Comme demandé, voici comment SillyControl est défini:

public partial class SillyControl : UserControl 
{ 
    private string testString; 
    public string TestString 
    { 
     get { return testString; } 
     set { testString = value; } 
    } 

    public SillyControl() 
    { 
     InitializeComponent(); 
    } 
} 

Le XAML est vraiment barebones. J'utilise le XAML par défaut, donc ce n'est rien de plus qu'une grille vide.

MISE À JOUR 2: J'ai créé un very simple test project pour le téléchargement qui recrée le problème.

+0

Nous avons besoin d'en savoir plus sur SillyControl. L'analyseur Xaml ne trouve pas de propriété appelée TestString sur le contrôle. – AnthonyWJones

+0

Merci pour les commentaires. J'ai mis à jour la question. – JubJub

Répondre

1
+0

Je suis d'accord que ce serait bien, mais pourquoi ne pas implémenter cette interface entraînerait l'erreur. Cela signifierait simplement que les modifications apportées à la valeur de la propriété échoueraient dans l'interface utilisateur, mais cela ne devrait pas provoquer cette erreur. – AnthonyWJones

+0

MyClass implémente INotifyProperty lorsque cette erreur s'est produite. J'ai également testé avec INotifyProperty supprimé. Non, allez dans les deux sens. – JubJub

1

avère que la propriété étant lié à doit être un DependencyProperty.

Questions connexes