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.
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
Merci pour les commentaires. J'ai mis à jour la question. – JubJub