有没有办法绑定到ItemsControl中的UIElement子节点?

时间:2014-11-19 22:32:52

标签: c# wpf

假设我有一个简单的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}" />

0 个答案:

没有答案