Привязка к UserControl вызывает ManagedRuntimeError - PullRequest
0 голосов
/ 03 апреля 2009

Я получаю ошибку во время выполнения, когда использую 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: Я создал очень простой тестовый проект для загрузки, воссоздающий проблему.

Ответы [ 2 ]

1 голос
/ 04 апреля 2009

Оказывается, что привязываемое свойство должно быть DependencyProperty.

1 голос
/ 03 апреля 2009
...