【问题标题】:Bind DataTemplate to 'outside' property将 DataTemplate 绑定到“外部”属性
【发布时间】:2025-12-10 02:35:01
【问题描述】:

我有一个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?

【问题讨论】:

    标签: c# wpf xaml data-binding datatemplate


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        最近更新 更多