私はWPFを初めて使用し、この例を出発点として使用してアプリケーションを作成しています http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090025
一度に表示できるワークスペースは 1 つだけなので、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 を使用してアクティブなワークスペースを設定しているようです - それは私が興味を持っているアクティブなワークスペースですが、 IsSynchronizedWithCurrentItem="True" と関係があることを除いて、TabControl が何をしているのか理解できません。
テンプレートはここから呼び出されます (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>
誰かが私が何をする必要があるか説明できますか? ありがとう