2011-04-30 132 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