我有一個ItemsCountrol和它的ItemsSource屬性綁定到一個ObservableCollection。我有一個顯示此類型的用戶控件(TeamUserControl)。我創建了一個datatemplate,用於爲itemssource集合中的每個自定義類型項加載此用戶控件。此時,我在TeamUserControl中創建的任何綁定語句都可以直接通過路徑{Binding Path = TeamOwner}引用Team屬性並工作。有沒有辦法將一個引用綁定到用戶控件所代表的ItemsSource項目上?例如,在TeamUserControl中創建類型爲Team的依賴屬性,並將其綁定到來自ItemsSource的項目實例。將DataTemplate控件屬性綁定到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>
在這個例子中該窗口代表其具有屬性的類「聯賽」: 的ObservableCollection小組。還有一個班級「團隊」,它有屬性:TeamOwner。 TeamUserControl有兩個依賴屬性:Team類型的AttachedTeam和類型爲string的TeamOwnerName。
我包含團隊所有者屬性引用以顯示每個這些用戶控件都有一個Team實例。我只是不確定如何引用它。
這是我認爲它應該工作。但是,我在嘗試在源類型的TeamUserControl和目標類型Team之間進行轉換時遇到了綁定錯誤。自從ItemsSource是OC以來,該錯誤讓我完全困惑。退後一步,如果我沒有定義ItemsControl.ItemsTemplate,我只需要一個類名「Team」。我想告訴它每個類Team對象,使用這個TeamUserControl usercontrol。 –
mminneman
是的,你是對的。事實證明,在我的TeamUserControl中,我(爲了調試)將DataContext設置爲(DataContext =「{Binding RelativeSource = {RelativeSource Mode = Self}}」),它保持我所有的窗口綁定語句按預期工作。我刪除了,一切都很好。謝謝。 – mminneman
@mminneman por青睞! – stukselbax