У меня серьезная проблема с привязкой данных.
У меня есть стекпанель с ItemControl в моем файле MainPage.xml:
<StackPanel>
<ItemsControl x:Name="TopicList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:TopicListItem Title="{Binding Title}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Затем я подключаю IEnumerable
объект кто, что содержит объект со свойством Title
на нем.Это делается в MainPage.xaml.cs (и я знаю, что часть LINQ работает):
var resultStories = from story in resultXML.Descendants("story")
select new NewsStory {...};
Dispatcher.BeginInvoke(() => TopicList.ItemsSource = resultStories);
И внутри моего пользовательского элемента управления TopicListItem я создал DepenencyProperty
и соответствующее открытое свойство:
#region Title (DependencyProperty)
/// <summary>
/// Title
/// </summary>
public String Title
{
get { return (String)GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}
public static readonly DependencyProperty TitleProperty =
DependencyProperty.Register("Title", typeof(String), typeof(TopicListItem),
new PropertyMetadata(0, new PropertyChangedCallback(OnTitleChanged)));
private static void OnTitleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((TopicListItem)d).OnTitleChanged(e);
}
private void OnTitleChanged(DependencyPropertyChangedEventArgs e)
{
throw new NotImplementedException();
}
#endregion Title (DependencyProperty)
Когда я запускаю это и пытаюсь установить ItemSource
, возникает ошибка в свойстве Title:
System.TypeInitializationException: инициализатор типа для NewsSync.TopicListItem выбросил исключение.---> System.ArgumentException: Тип значения по умолчанию не соответствует типу свойства .
-
В качестве примечания: я пытался не объявлять свойство DepenencyPropertyдля свойства Title и просто наличия его в качестве публичной строки.Но потом возникают проблемы с конвертацией, когда говорится, что я не могу конвертировать из System.[...].Binding
в System.String
Так что я действительно много чего перепробовал.