0

私の WPF アプリケーションには、TabControl名前付きのParentTabControlがあります。この ContentTemplate は、TabControl名前付きのChildTabControlを含む複数のコントロールで構成されています。

ParentTabControl には、たとえば 2 つのタブ (それぞれが異なるソースにバインドされています) が含まれていますが、ChildTabControlには常に 1 つのタブが含まれています。ParentTabControlの最初のタブに注目しています。デフォルトでは、ChildTabControlの最初の (唯一の) タブが選択されています。問題は、 ParentTabControl の 2 番目のタブに切り替えると、その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 };
    }
}

ありがとうございました。

4

1 に答える 1

1

まず、アイテムが 1 つしかない場合、なぜ ? が必要なのTabControlですか? ヘッダー付きの要素が必要な場合は、ContentTemplate.

ただし、表示されている問題を解決するために、で設定を試みSelectedIndex="0"ましたChildTabControlか? これにより、常に選択されるようになります。

他の可能な解決策の編集

これを再現することはできましたが、私のテストでは断続的にしか発生しません。

SelectedItemこれを修正する最も簡単な方法は、子のTabControlをに設定することだと思いますChildItemsSource:

<TabControl Name="ChildTabControl"
            ItemsSource="{Binding ChildItemsSource, Converter={StaticResource ResourceKey=ItemToObservableCollectionConverter }}"
            SelectedItem="{Binding ChildItemsSource}" />

この問題の原因はわかりませんが、これで間違いなく修正されます。

于 2013-08-13T15:05:52.110 に答える