2011-04-30 123 views
2

您好,我有一個ViewModel的dataTemplate。XAML:在DataTemplate中的ListView中綁定帶DataTemplate的慘敗

在這個DataTemplate中,我得到了一個綁定到模板集合的ListView並且在那裏我不能夠設置集合中的項目屬性。

該屬性的可用設置是在原始ViewModel的另一個集合中,但我很難綁定到它。

<DataTemplate DataType="{x:Type ViewModel}"> 

    <!-- Some irrelevant property bindings --> 

    <ListView ItemsSource="{Binding Path=TheCollection}"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource SOMEAPPROPRIATERELATIVESOURCE}, 
              Path=AvailablePropertiesCollection}" SelectedItem="{Binding Path=TheProperty}" /> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
    </ListView> 

是否有一些好的方法來獲得綁定到頂級DataTemplate的項目?

回答

0

我相信你會想使用:

ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, 
    Path=DataContext.AvailablePropertiesCollection}" 

此結合到ListView的數據上下文的AvailablePropertiesCollection。

+0

因此,ListView將項目作爲DataContext包裝在DataTemplate中。有道理,我會檢查出來,然後給它正確的答案,如果它的工作。 – 2011-05-23 12:40:50

+0

@Ingó - 是的,DataTemplate中的任何東西都會得到一個新的「數據上下文」。在這種情況下,它將是ItemsSource中的項目。聽起來你需要獲得ListView的數據上下文,這就是我所描述的。 – CodeNaked 2011-05-23 12:43:37

+0

完美的作品,這麼簡單,我應該想出來。那麼掌握XAML需要一生。謝謝。 – 2011-05-23 12:52:39