2012-01-29 129 views
3

我想在我的viewmodel上將一個ComboBox綁定到項目列表(ObservableCollection)。如果我在我看來使用類似這樣的東西:在DataTemplate中的ComboBox ItemsSource綁定

<ComboBox ItemsSource="{Binding Path=Teams}" DisplayMemberPath="TeamName" /> 

一切都正常。但是,如果我使用相同的組合框並將其用作另一個用作列表框項目模板的模板上的數據模板的一部分,則列表中不會顯示任何內容。僞例如:

<DataTemplate x:Key="test"> 
    <TextBlock Text="Team:" /> 
    <ComboBox ItemsSource="{Binding Path=Teams}" DisplayMemberPath="TeamName" /> 
</DataTemplate> 
<ListBox ItemsSource="GamesCV" ItemTemplate="{StaticResource test}" /> 

我想,也許我需要添加一個相對的發射源,所以我試過了,但沒有運氣。我也嘗試給我的UserControl一個名字,並用它作爲我的組合框綁定的ElementName。我無法想象這是如此艱難。我可能錯過了一些明顯的東西。誰能幫忙?如有必要,我可以提供更多細節,現在我只是需要時間。

感謝,丹尼斯

+0

是否有運行時在輸出窗口任何約束力的錯誤在VS? GamesCV集合中的項目是否有名爲'Teams'的屬性? – nemesv 2012-01-29 18:02:14

+0

你的DataContext是否正常?你的GamesCV是一個(可觀察的)集合,並且該集合的一個項目(GameCV)有一個'Teams'pblic屬性,它是一個(可觀察的)具有公共屬性TeamName的項目集合?先試着檢查一下。您可能首先添加GameCV的另一個屬性來檢查您的測試DataTemplate的DataContext(?GameName?)。 – GameAlchemist 2012-01-29 18:06:11

回答

4

你可能忘了在路徑中DataContext?如果您使用RelativeSource你的目標骨架元素和不再DataContext,所以這應該這樣做:

{Binding DataContext.Teams, RelativeSource={RelativeSource AncestorType=ListBox}} 

此外,如果你有綁定check for errors麻煩,他們會告訴你你需要知道的所有

+0

明白了!謝謝,H.B. - 我認爲這會很簡單。 – Dennis 2012-01-29 18:38:03

0

對於UWP我得到了它這樣的

<GridView x:Name="abc" ItemsSource="{Binding Path=DataContext.Companies,RelativeSource={RelativeSource Mode=TemplatedParent}}"></GridView> 
相關問題