在我的WPF应用程序中,我有一个名为TabControl的ParentTabControl,ContentTemplate由几个控件组成,包括一个名为ChildTabControl的TabControl。
例如,ParentTabControl包含两个选项卡(每个选项卡绑定到不同的源),其中ChildTabControl总是包含一个选项卡。我正在聚焦ParentTabControl的第一个选项卡。默认情况下,选择ChildTabControl的第一个(唯一的)选项卡。问题是,如果切换到ParentTabControl的第二个选项卡,它的ChildTabControl选项卡就不会被选中。这是正常的行为吗?怎样才能始终选择一个选项卡?
希望我说得够清楚。以下是一些代码:
ParentTabControl:
<TabControl Name="ParentTabControl"
ItemsSource="{Binding ParentItemsSource}"
ContentTemplate="{StaticResource ResourceKey=ContentTemplate}"
IsSynchronizedWithCurrentItem="True" />ContentTemplate:
<DataTemplate x:Key="ContentTemplate">
<TabControl Name="ChildTabControl"
ItemsSource="{Binding ChildItemsSource, Converter={StaticResource ResourceKey=ItemToObservableCollectionConverter }}" />
</DataTemplate>ItemsSource:
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 };
}
}谢谢。
发布于 2013-08-13 15:05:52
首先,如果您只有一个项目,为什么要一个TabControl?如果您只想拥有一个带有标头的元素,可以在ContentTemplate中这样做。
但是,为了解决您所看到的问题,您是否尝试过在SelectedIndex="0"上设置ChildTabControl?这应该会迫使它总是被选中。
编辑其他可能的解决方案
嗯,我能够复制这个,但它只是在我的测试中间歇性地发生。
我认为最简单的解决方法是将子SelectedItem TabControl设置为ChildItemsSource。
<TabControl Name="ChildTabControl"
ItemsSource="{Binding ChildItemsSource, Converter={StaticResource ResourceKey=ItemToObservableCollectionConverter }}"
SelectedItem="{Binding ChildItemsSource}" />我不知道是什么引起了这个问题,但这肯定解决了这个问题。
https://stackoverflow.com/questions/18209796
复制相似问题