将DataTemplate控件属性绑定到ItemsSource集合中的项目?

时间:2011-07-20 18:33:44

标签: wpf datatemplate itemtemplate itemssource

我有一个ItemsCountrol,其ItemsSource属性绑定到ObservableCollection。我有一个显示此类型的usercontrol(TeamUserControl)。我创建了一个datatemplate,为itemssource集合中的每个customtype项加载此usercontrol。此时,我在TeamUserControl中创建的任何Binding语句都可以通过路径{Binding Path = TeamOwner}直接引用Team属性并工作。有没有办法绑定对usercontrol表示的ItemsSource项的引用?例如,在TeamUserControl中创建Team类型的dependancy属性,并将其绑定到ItemsSource中项目的实例。

    <ItemsControl Name="ItemCtrl" Grid.Row="0" ItemsSource="{Binding Path=League.Teams}">
      <ItemsControl.ItemTemplate>
        <DataTemplate>
          <mycontrols:TeamUserControl AttachedTeam="{Binding ???}" TeamOwnerName="{Binding Path=TeamOwner}"/>
        </DataTemplate> 
      </ItemsControl.ItemTemplate>
    </ItemsControl>

在此示例中,窗口表示类“League”,其具有以下属性: ObservableCollection团队。并且有一个类“Team”,它具有属性:TeamOwner。 TeamUserControl有两个依赖属性:Team类型的AttachedTeam和String类型的TeamOwnerName。

我包含了团队所有者属性引用,以显示每个用户控件都有一个Team实例。我只是不确定如何引用它。

1 个答案:

答案 0 :(得分:4)

据我了解你,你应该写

<mycontrols:TeamUserControl AttachedTeam="{Binding}" TeamOwnerName="{Binding Path=TeamOwner}"/>

{Binding}语句将绑定到ItemsSource中的当前项,其中T类型是ObservableCollection<T> League.Teams使用的类型。

我还建议您阅读有关ItemsControl的MSDN文章,并查看Binding以了解自己,您可以绑定的内容。