假设我有一个简单的ItemsControl,绑定到简单数据对象列表:
<ItemsControl ItemsSource="{Binding dataModelCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Fill="Red" Width="10" Height="10"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这里ItemsControl的子项是dataModelCollection中的项,这些是简单的模型类型。但是,Items控件将使用一堆矩形填充自己。有没有办法绑定到这些矩形,而不是数据对象?
我的假设是,我可以,因为当ItemsControl使用ItemsSource时,它会阻止Items属性受到干扰 - 您不能在ItemsSource之外添加其他元素。但是,我一直在寻找这样一种方式,却一无所获。
编辑:这可能看起来像一个愚蠢的问题,但我之所以要寻找答案,是因为我想使用ItemsControl为dataModelCollection中的每个项目生成一些UIElements ,然后把它们放在一个小组;我不能直接将它们放在Panel中,我也不能将Panel定义为ItemsControl.ItemsPanel,因为我需要引用实际的Panel来实现一些代码隐藏的目的。
在阅读我想要的结果的以下示例时,请记住上述原因:
<ItemsControl x:Name=elementWrapper ItemsSource="{Binding dataModelCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Fill="Red" Width="10" Height="10"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<CustomControls:SpecialPanel x:Name="desiredHome" Elements="{Binding ElementName=elementWrapper, Path=ItemContainerGenerator.Items}" />