在我的WPF应用程序中,我有一个名为 ParentTabControl 的TabControl
,其中ContentTemplate由多个控件组成,包括TabControl
名为 ChildTabControl
ParentTabControl包含,比方说,2个选项卡(每个选项卡绑定到不同的源),其中 ChildTabControl 始终包含1个选项卡。我正在关注 ParentTabControl 的第一个标签。默认情况下,选择 ChildTabControl 的第一个(唯一一个)选项卡。问题是,如果我切换到 ParentTabControl 的第二个选项卡,则不会选择其 ChildTabControl 的选项卡。这是正常的行为吗?如何始终选择标签?
我希望我足够清楚。这是一些代码:
<TabControl Name="ParentTabControl"
ItemsSource="{Binding ParentItemsSource}"
ContentTemplate="{StaticResource ResourceKey=ContentTemplate}"
IsSynchronizedWithCurrentItem="True" />
<DataTemplate x:Key="ContentTemplate">
<TabControl Name="ChildTabControl"
ItemsSource="{Binding ChildItemsSource, Converter={StaticResource ResourceKey=ItemToObservableCollectionConverter }}" />
</DataTemplate>
public ObservableCollection<ParentData> ParentItemsSource { get; set; }
public class ParentData
{
public ChildData ChildItemsSource { get; set; }
}
public class ItemToObservableCollectionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return new ObservableCollection<object> { value };
}
}
谢谢。
答案 0 :(得分:1)
首先,如果您只有一个项目,为什么要TabControl
?如果您只想要一个带标题的元素,可以在ContentTemplate
中执行此操作。
为了解决您所看到的问题,您是否尝试在SelectedIndex="0"
上设置ChildTabControl
?这应该强制它总是被选中。
编辑其他可能的解决方案
嗯,我能够复制这个,但它只是在我的测试中间歇性地发生。
我认为解决此问题的最简单方法是将孩子SelectedItem
的{{1}}设置为TabControl
:
ChildItemsSource
我不知道是什么导致了这个问题,但这肯定会解决它。