Я получаю ошибку во время выполнения, когда использую DataBinding, и это сводит меня с ума. У меня есть простой UserControl, который я определил, давайте назовем его SillyControl. Отдельно у меня есть коллекция
ObservableCollection<MyClass> myObjects;
и ListBox с именем SillyListBox, который связан с этой коллекцией ObservableCollection с помощью: SillyListBox.ItemsSource = myObjects;
ListBox определен в XAML следующим образом:
<ListBox x:Name="SillyListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<MyControls:SillyControl TestString="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Таким образом, всякий раз, когда объект добавляется в коллекцию myObjects
, в ListBox должен быть добавлен новый SillyControl, а свойство TestString
этого SillyControl должно быть связано со свойством Name
объекта MyClass
это представляет.
Это не работает. Он хорошо компилируется, но когда я запускаю программу, он выдает мне неприятную ошибку времени выполнения - System.Windows.Markup.XamlParseException и ниже того, что говорит AG_E_PARSER_BAD_PROPERTY_VALUE.
Теперь, если я просто удаляю Binding, присваиваю TestString фиксированное значение, например, , ошибка исчезает . Для меня также возможно определить элемент управления TextBlock вместо SillyControl и успешно использовать привязку к нему. Что на Земле вызывает это?
Обновление: По запросу, вот как определяется SillyControl:
public partial class SillyControl : UserControl
{
private string testString;
public string TestString
{
get { return testString; }
set { testString = value; }
}
public SillyControl()
{
InitializeComponent();
}
}
XAML - это действительно скелет. Я использую XAML по умолчанию, так что это всего лишь пустая сетка.
ОБНОВЛЕНИЕ 2: Я создал очень простой тестовый проект для загрузки, воссоздающий проблему.