2

单个控件是否可以有多个 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 的数据。如何做到这一点?

谢谢。

4

2 回答 2

3

您可以使用RelativeSource -FindAncestor 到达可视化树并获取不同的DataContext。

例如(假设命令是你想要的):

Command=”{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, Path=CheckCommand}”

也应该是一个很好的资源。

编辑:错字和资源。

于 2011-06-09T17:23:37.807 回答
2

如果我没记错的话,DataTemplates 在它们自己的范围内运行,并且不能直接使用在DataTemplate. 但是,您可以通过直接从模板内部使用StaticResource和引用它来绕过它。TextBlock

我还没有尝试过 Ragepotatos 的方法来超出 DataTemplate 范围,但我很想知道这是否也适合你。

于 2011-06-09T17:34:12.330 回答