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