Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WPF 4.0中,切换选项卡会重置用户控件UI_Wpf_Wpf Controls_Tabcontrol - Fatal编程技术网

在WPF 4.0中,切换选项卡会重置用户控件UI

在WPF 4.0中,切换选项卡会重置用户控件UI,wpf,wpf-controls,tabcontrol,Wpf,Wpf Controls,Tabcontrol,我在HeaderedContentControl中有一个包含TabControl的边框: <Border Grid.Column="1" Style="{StaticResource MainBorderStyle}"> <HeaderedContentControl Content="{Binding Path=Workspaces}" ContentTemplate="{StaticResource

我在HeaderedContentControl中有一个包含TabControl的边框:

<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属性的Workspace属性包含一个UserControl集合,这些控件在选项卡中呈现。这一切都很好

问题是,当我在一个UserControls中选择网格中的一行时,切换到另一个选项卡,然后返回,所选行被重置。如果RowDetails处于打开状态,也会发生同样的情况——当我切换到该选项卡并返回时,它会被折叠

有办法吗

编辑:在查看了TabControl行为的建议解决方案后,我想知道是否可以完全放弃它。有没有关于UI的想法,可以让我保留几个相对复杂的用户控件并在它们之间切换,而不会在过程中失去视觉效果


谢谢

这是TabControl的常见问题。因为它只显示选定选项卡的内容。如果您的选项卡项本身不是视觉效果,并且显示有数据模板,则在切换选项卡时将创建并释放控件


这个问题有两种解决方案,它们试图保留每个选项卡的视觉效果。

我希望我知道这是一个“常见”问题。。。我想我必须看一下附带的行为解决方案。谢谢