XAML:在DataTemplate中的ListView中绑定带DataTemplate的惨败
问题描述:
您好,我有一个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的项目?
答
我相信你会想使用:
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}},
Path=DataContext.AvailablePropertiesCollection}"
此结合到ListView的数据上下文的AvailablePropertiesCollection。
因此,ListView将项目作为DataContext包装在DataTemplate中。有道理,我会检查出来,然后给它正确的答案,如果它的工作。 – 2011-05-23 12:40:50
@Ingó - 是的,DataTemplate中的任何东西都会得到一个新的“数据上下文”。在这种情况下,它将是ItemsSource中的项目。听起来你需要获得ListView的数据上下文,这就是我所描述的。 – CodeNaked 2011-05-23 12:43:37
完美的作品,这么简单,我应该想出来。那么掌握XAML需要一生。谢谢。 – 2011-05-23 12:52:39