单个控件可以有多个ItemSource吗?
鉴于以下代码:
<ComboBox Margin="137,101,169,183" ItemsSource="{Binding collection}" SnapsToDevicePixels="True"
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Command="{Binding CheckCommand}" IsChecked="{Binding IsChecked}" Content="{Binding Name}"/>
<TextBlock Text="" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
ComboBox DataTemplate中的TextBlock需要VM中其他属性的数据,而不是ComboBox的数据。如何实现这一目标?
感谢。
答案 0 :(得分:3)
您可以使用RelativeSource - FindAncestor来访问可视化树并获取不同的DataContext。
例如(假设命令是你想要的):
Command=”{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, Path=CheckCommand}”
This也应该是一个很好的资源。
编辑:错字和资源。
答案 1 :(得分:2)
如果我没记错的话,DataTemplates在他们自己的范围内运行,不能直接使用DataTemplate
之外定义的ElementNames。但是,您可以使用StaticResource
并直接从模板中的TextBlock
引用它来解决问题。
我没有尝试过Ragepotatos的方法去DataTemplate范围,但是很想知道这是否适合你。