2011-06-29 70 views
2

我有一個包含在HeaderedContentControl一個TabControl邊框:在WPF 4.0,切換標籤重置用戶控件UI

<Border Grid.Column="1" 
    Style="{StaticResource MainBorderStyle}"> 
    <HeaderedContentControl 
       Content="{Binding Path=Workspaces}" 
       ContentTemplate="{StaticResource WorkspacesTemplate}" 
       Header="Decision Workspaces" 
       Style="{StaticResource MainHCCStyle}"/> 
</Border> 

的TabControl的是在靜態資源定義:

<DataTemplate x:Key="ClosableTabItemTemplate"> 
    <DockPanel Width="120" ToolTip="{Binding Path=DisplayName, Mode=OneTime}"> 
     <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, Mode=OneTime}" 
     VerticalAlignment="Center" 
    /> 
    </DockPanel> 
</DataTemplate> 

<!-- 
This template explains how to render the 'Workspace' content area in the main window. 
--> 
<DataTemplate x:Key="WorkspacesTemplate"> 
    <TabControl 
    IsSynchronizedWithCurrentItem="True" 
    ItemsSource="{Binding}" 
    ItemTemplate="{StaticResource ClosableTabItemTemplate}" 
    Margin="4" 
    /> 
</DataTemplate> 

的工作區物業綁定到HeaderedContentControl的Content屬性,它具有一組UserControls,它們在選項卡中呈現。這一切工作正常。

問題是,當我在其中一個UserControl中選擇一個網格中的行時,切換到不同的選項卡,然後返回,所選的行被重置。如果RowDetails處於打開狀態,則會發生同樣的情況 - 當我切換回標籤頁時,它會摺疊。

任何方法?

編輯:看的TabControl的行爲所提出的解決方案之後,我遊蕩,如果我可以完全拋棄它。對於一個UI的任何想法,這將允許我保留幾個相對複雜的UserControl並在它們之間切換,而不是丟失過程中的視覺效果?

謝謝!

回答

4

這是TabControl常見的問題。由於它只顯示選定選項卡的內容。如果您的選項卡項目本身不是可視對象,並且顯示有DataTemplate,則在切換選項卡時將創建並釋放控件。

這個問題有兩種解決方案herehere,它試圖保留每個標籤的視覺效果。

+0

我希望我知道這是一個'常見'問題......我想我將不得不看看附加的行爲解決方案。謝謝! – GilShalit