将DataTemplate绑定到';外部';所有物

本文关键字:外部 所有物 DataTemplate 绑定 | 更新日期: 2023-09-27 18:29:08

我有一个TabControl,它从它的ItemsSource构建了一个TabItems列表。像这样:

<TabControl ItemsSource="{Binding Path =.}">
    <TabControl.ItemContainerStyle>
            <Style TargetType="TabItem" BasedOn="{StaticResource BlueTabItem}" >
                <Setter Property="Header" Value="{Binding Path=dataName}"/>
            </Style>
    </TabControl.ItemContainerStyle>
    ...
</TableControl>

作为DataTemplate的一部分,我需要绑定到TabControl所在的XAML窗口中的列表:

public partical class SomeWindow : Window {
     public List<string> aList {
         get { return new List<string>(); }
     }
}

如何从TabControl的DataTemplate中引用和绑定aList?

将DataTemplate绑定到';外部';所有物

如果将绑定的RelativeSource设置为一个元素,该元素的数据上下文使其可以访问aList属性,则可以将绑定的Path设置为aList。所以它看起来是这样的(假设你的窗口的DataContext允许它访问aList):

ItemsSource={Binding Path=aList, RelativeSource={RelativeSource AncestorType={x:Type Window}}

使用RelativeSource绑定和以窗口为目标的AncestorType