【发布时间】:2015-05-27 14:06:54
【问题描述】:
我正在学习 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}">
我在上面的示例中找不到一个。有人可以帮我看看我在这里缺少什么吗?
>>更新:
基于 cmets,我现在了解到数据上下文来自使用 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 行,以防您看不到它。
【问题讨论】: