다른 탭을 선택할 때 WPF TabControl이 TabItem의 자식을 언로드하지 않도록 할 수 있습니까?WPF TabControl : 다른 탭을 선택하면 자식이 언로드됩니다.
내가 직면하고있어 문제는 여기에 설명 된 것과 유사합니다 : WPF TabControl - Preventing Unload on Tab Change?
이 솔루션은 TabControl에 데이터 바인딩 된 경우에만 작동하는 것 같다 제공했다.
<local:TabControlEx>
<TabItem Header="First Tab">
<TreeView ItemsSource="{Binding TreeNodes}" Unloaded="treeView_Unloaded">
<TreeView.Resources>
<DataTemplate DataType="{x:Type local:NodeViewModel}">
<TextBlock Text="{Binding NodeName}" />
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</TabItem>
<TabItem Header="Second Tab">
<TextBlock Name="txText2">Second Text 2</TextBlock>
</TabItem>
</local:TabControlEx>
는 "두 번째 탭"을 선택
는, treeView_Unloaded가 트리거 : 당신이 TabItems을 추가하는 경우 그것은 작동하지 않습니다.배경 : 내 실제 응용 프로그램에서 TabItem 중 하나는 TreeView에 바인딩 된 데이터를 포함하는 UserControl을 포함합니다 : TreeViewItem.IsSelected는 속성에 바인딩됩니다. IsSelected에 바인딩 된 속성을 설정하면 해당 TreeViewItem이 선택됩니다. 사용자가 다른 탭으로 전환하면 TreeView가 언로드됩니다 (VisualTree에서 제거됨). 이 상황에서 해당 TreeViewItem이없는 노드에서 IsSelected를 true로 설정하면 TreeView가 잘못 작동합니다. TreeView는 현재 시각적 트리의 일부가 아니기 때문에 TreeViewItem을 선택해야하는 노드에 대해 TreeViewItem을 만들지 않기 때문에 . 그래서 내가 달성하고자하는 것은 TreeView가 현재 보이지 않는 탭에 있더라도 IsSelected를 true로 설정하여 다른 노드를 선택할 수 있다는 것입니다. TreeView를 TabControl 외부의 일부 위치로 이동하면 가시성이 축소 된 패널 내부에 있더라도 문제가 해결되는 것으로 보입니다. 따라서 가시성이 문제는 아니지만 TreeView가 현재 시각적 트리의 일부가 아닙니다.