我对 WPF 很陌生,正在使用这个示例作为起点编写一个应用程序 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090025
我在任何时候都只能看到一个工作区,所以我想摆脱 TabControl 并使用一些简单的东西 - 可能是一个 ContentControl,我真的不确定,但它需要做的就是包含内容并可以关闭. 所以我试图替换这个:
<DataTemplate x:Key="WorkspacesTemplate"><TabControl
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource ClosableTabItemTemplate}"
Margin="4"
/>
和:
<DataTemplate x:Key="WorkspacesTemplate">
<ContentControl Content="{Binding ??}" ContentTemplate="{StaticResource ClosableTabItemTemplate}"/>
</DataTemplate>
但我不知道要绑定什么。示例中的代码似乎使用 CollectionViewSource 来设置活动工作区 - 这是我感兴趣的活动工作区,但我不明白 TabControl 正在做什么,除了它与 IsSynchronizedWithCurrentItem="True" 有关
从这里调用模板(Workspaces 是 ViewModels 的 ObservableCollection):
<HeaderedContentControl Content="{Binding Path=Workspaces}" ContentTemplate="{StaticResource WorkspacesTemplate}" Header="Workspaces" Style="{StaticResource MainHCCStyle}"/>
这是 ClosableItem 模板:
<DataTemplate x:Key="ClosableTabItemTemplate">
<DockPanel Width="120">
<Button
Command="{Binding Path=CloseCommand}"
Content="X"
Cursor="Hand"
DockPanel.Dock="Right"
Focusable="False"
FontFamily="Courier"
FontSize="9"
FontWeight="Bold"
Margin="0,1,0,0"
Padding="0"
VerticalContentAlignment="Bottom"
Width="16" Height="16"
/>
<ContentPresenter
Content="{Binding Path=DisplayName}"
VerticalAlignment="Center"
/>
</DockPanel>
</DataTemplate>
请问有人可以解释我需要做什么吗?谢谢