В WPF 4.0 переключение вкладок сбрасывает пользовательский интерфейс управления - PullRequest
2 голосов
/ 29 июня 2011

У меня есть граница, которая содержит TabControl в HeaderedContentControl:

<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>

Свойство Workspaces, которое связано сСвойство Content объекта HeaderedContentControl содержит коллекцию элементов UserControl, которые отображаются на вкладках.Это все работает нормально.

Проблема в том, что когда я выбираю строку в сетке в одном из пользовательских элементов управления, переключаюсь на другую вкладку и затем возвращаюсь, выбранная строка сбрасывается.То же самое происходит, если открыт RowDetails - когда я переключаюсь и возвращаюсь на вкладку, он сворачивается.

Любой способ обойти это?

Редактировать : Посмотрев на предлагаемые решения для поведения TabControl, я хочу узнать, могу ли я вообще отказаться от него.Любые идеи для пользовательского интерфейса, которые позволят мне сохранить несколько относительно сложных UserControls и переключаться между ними, не теряя при этом визуальные эффекты?

Спасибо!

1 Ответ

4 голосов
/ 29 июня 2011

Это общая проблема с TabControl.Так как он отображает только содержимое выбранной вкладки.Если ваши элементы вкладок не являются самими визуальными элементами и представлены с помощью DataTemplate, то элементы управления будут создаваться и освобождаться при переключении вкладок.

Существует два решения этой проблемы здесь и здесь , которые пытаются сохранить визуальные эффекты для каждой вкладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...