WPF多个项目源
本文关键字:项目 WPF | 更新日期: 2023-09-27 17:58:43
单个控件是否可以有多个ItemSources?
给定以下代码:
<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之外的其他属性的数据。如何做到这一点?
谢谢。
您可以使用RelativeSource FindAncestor访问可视化树并获取不同的DataContext。
例如(假设命令是您想要的):
Command=”{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, Path=CheckCommand}”
这也应该是一个很好的资源。
编辑:打字和资源。
如果我没记错的话,DataTemplates在它们自己的范围内运行,不能直接使用在DataTemplate
之外定义的ElementNames。但是,您可以通过使用StaticResource
并直接从模板中的TextBlock
引用它来绕过它。
我还没有尝试过Ragepotatos的方法来超出DataTemplate的范围,但我很想知道这是否也适用于你。