首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TabControl中ContentTemplate包含TabControl的问题

TabControl中ContentTemplate包含TabControl的问题
EN

Stack Overflow用户
提问于 2013-08-13 12:59:28
回答 1查看 347关注 0票数 0

在我的WPF应用程序中,我有一个名为TabControl的ParentTabControl,ContentTemplate由几个控件组成,包括一个名为ChildTabControl的TabControl

例如,ParentTabControl包含两个选项卡(每个选项卡绑定到不同的源),其中ChildTabControl总是包含一个选项卡。我正在聚焦ParentTabControl的第一个选项卡。默认情况下,选择ChildTabControl的第一个(唯一的)选项卡。问题是,如果切换到ParentTabControl的第二个选项卡,它的ChildTabControl选项卡就不会被选中。这是正常的行为吗?怎样才能始终选择一个选项卡?

希望我说得够清楚。以下是一些代码:

ParentTabControl:

代码语言:javascript
复制
<TabControl Name="ParentTabControl"
            ItemsSource="{Binding ParentItemsSource}"
            ContentTemplate="{StaticResource ResourceKey=ContentTemplate}"
            IsSynchronizedWithCurrentItem="True" />

ContentTemplate:

代码语言:javascript
复制
<DataTemplate x:Key="ContentTemplate">
    <TabControl Name="ChildTabControl"
                ItemsSource="{Binding ChildItemsSource, Converter={StaticResource ResourceKey=ItemToObservableCollectionConverter }}" />
</DataTemplate>

ItemsSource:

代码语言:javascript
复制
public ObservableCollection<ParentData> ParentItemsSource { get; set; }

public class ParentData
{
    public ChildData ChildItemsSource { get; set; }
}

转换器:

代码语言:javascript
复制
public class ItemToObservableCollectionConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return new ObservableCollection<object> { value };
    }
}

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-13 15:05:52

首先,如果您只有一个项目,为什么要一个TabControl?如果您只想拥有一个带有标头的元素,可以在ContentTemplate中这样做。

但是,为了解决您所看到的问题,您是否尝试过在SelectedIndex="0"上设置ChildTabControl?这应该会迫使它总是被选中。

编辑其他可能的解决方案

嗯,我能够复制这个,但它只是在我的测试中间歇性地发生。

我认为最简单的解决方法是将子SelectedItem TabControl设置为ChildItemsSource

代码语言:javascript
复制
<TabControl Name="ChildTabControl"
            ItemsSource="{Binding ChildItemsSource, Converter={StaticResource ResourceKey=ItemToObservableCollectionConverter }}"
            SelectedItem="{Binding ChildItemsSource}" />

我不知道是什么引起了这个问题,但这肯定解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18209796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档