我有一个带有内联 ItemsSource 的 ItemsControl,如下所示(简化):
<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。绑定表达式:路径=已删除;数据项=空;目标元素是'KeyData'(HashCode=4638229);目标属性是“计数”(类型为“Nullable`1”)
我认为这是依赖属性的重点 - 处理这样的情况?有人能指出我误解的部分吗?