将DataTemplate绑定到“外部”属性

时间:2012-03-28 00:50:57

标签: c# wpf xaml data-binding datatemplate

我有一个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窗口中的List:

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

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

2 个答案:

答案 0 :(得分:3)

使用RelativeSource绑定与AncestorType定位窗口。

答案 1 :(得分:3)

如果将绑定的RelativeSource设置为其数据上下文使其可以访问aList属性的Element,则可以将Binding的路径设置为aList。所以它看起来像这样(假设你的窗口的DataContext允许它访问aList):

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