Имам ItemsControl с вграден ItemsSource както по-долу (опростен):
<UserControl>
<ItemsControl>
<ItemsControl.ItemsSource>
<x:Array Type="y:KeyData">
<y:KeyData Name="Name1"/>
<y:KeyData Name="Name2"/>
</x:Array>
</ItemsControl.ItemsSource>
</ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type DateDifferences:KeyData}">
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</UserControl>
Сега искам да свържа друга стойност към всеки елемент на KeyData. Опитах по-долу:
<UserControl>
<ItemsControl>
<ItemsControl.ItemsSource>
<x:Array Type="y:KeyData">
<y:KeyData Name="Name1" Count="{Binding Count1}"/>
<y:KeyData Name="Name2" Count="{Binding Count2}"/>
</x:Array>
</ItemsControl.ItemsSource>
</ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type DateDifferences:KeyData}">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Count}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</UserControl>
И настройте свойство на зависимост, както е показано по-долу:
internal class KeyData : DependencyObject
{
public string Name { get; set; }
public int? Count
{
get { return (int?)GetValue(CountProperty); }
set { SetValue(CountProperty, value); }
}
public static readonly DependencyProperty CountProperty =
DependencyProperty.Register("Count",
typeof(int?),
typeof(KeyData),
new FrameworkPropertyMetadata());
}
И предайте в контекст на данни:
<UserControlName DataContext="{Binding Container.APresenter}"/>
Обвързванията обаче не успяват да намерят източника...
System.Windows.Data Грешка: 2: Не може да се намери управляващ FrameworkElement или FrameworkContentElement за целевия елемент. BindingExpression:Path=Премахнато; DataItem=null; целевият елемент е „KeyData“ (HashCode=4638229); целевото свойство е 'Count' (тип 'Nullable`1')
Мислех, че това е смисълът на свойство на зависимост - да обработва случаи като този? Някой може ли да посочи частта, която съм разбрал погрешно?
Count1
иCount2
? Ще трябва да зададете Source или RelativeSource или ElementName на двете обвързвания, тъй като в масива не се наследява DataContext. - person Clemens   schedule 08.04.2015