我正在学习WPF并正在学习this MSDN resource。目前,我正在关注来自提供的可下载代码的数据模板中的特定行:
<DataTemplate x:Key="WorkspacesTemplate">
<TabControl
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
Margin="4"
/>
</DataTemplate>
我理解,例如来自this SO post等资源,ItemsSource="{Binding}"
将绑定到关联的DataContext
,但后者SO帖子中的示例显示DataContext
:
<ListView
DataContext="{StaticResource XMLFileGroups}"
ItemContainerStyle="{StaticResource XMLItemStyle}"
ItemsSource="{Binding}">
我在上面的例子中找不到一个。有人可以帮我看看我在这里缺少什么吗?
&gt;&gt;更新:
基于评论,我现在明白数据上下文来自使用DataTemplate
的容器,因此这里是来自MainWindow
的XAML,其中使用了模板。请注意,我仍无法在任何地方找到DataContext
:
<Window
x:Class="DemoApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:DemoApp.ViewModel"
FontSize="13"
FontFamily="Verdana"
MinWidth="650" MinHeight="420"
Title="{Binding Path=DisplayName}"
Width="650" Height="420"
WindowStartupLocation="CenterScreen"
>
<Window.Resources>
<ResourceDictionary Source="MainWindowResources.xaml" />
</Window.Resources>
<DockPanel>
<DockPanel DockPanel.Dock="Top" KeyboardNavigation.TabNavigation="None">
<Menu KeyboardNavigation.TabNavigation="Cycle">
<MenuItem Header="_File">
<MenuItem Header="E_xit" Command="{Binding Path=CloseCommand}" />
</MenuItem>
<MenuItem Header="_Edit" />
<MenuItem Header="_Options" />
<MenuItem Header="_Help" />
</Menu>
</DockPanel>
<Grid Margin="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="4" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Border
Grid.Column="0"
Style="{StaticResource MainBorderStyle}"
Width="170"
>
<HeaderedContentControl
Content="{Binding Path=Commands}"
ContentTemplate="{StaticResource CommandsTemplate}"
Header="Control Panel"
Style="{StaticResource MainHCCStyle}"
/>
</Border>
<Border
Grid.Column="2"
Style="{StaticResource MainBorderStyle}"
>
<HeaderedContentControl
Content="{Binding Path=Workspaces}"
ContentTemplate="{StaticResource WorkspacesTemplate}"
Header="Workspaces"
Style="{StaticResource MainHCCStyle}"
/>
</Border>
</Grid>
</DockPanel>
</Window>
仅供参考,WorkspacesTemplate
从底部开始使用8行,以防您无法看到。
答案 0 :(得分:1)
第一种情况下的数据上下文是由应用此模板的父控件提供的上下文。
因此,只要您使用此数据模板,该控件就会设置上下文。