0

私は WPF を学んでおり、ComboBox のバインドについて質問があります

次のコントロールを持つ単純な WPF ウィンドウがあります。上部に ComboBox があり、その下に TabControl があります。

tabcontrol に 2 つの標準的な TabItems を設定します。次に、さらにいくつかのタブを追加しますが、これらは単に TabItem を継承する独自の「MyTab」クラスのものです。私は何かをオーバーライドしたり、風変わりなことをしたりしているわけではなく、いくつかのパブリック プロパティを追加しただけです。

ComboBox をナビゲーション ツールとして使用したいと考えています。各タブにはヘッダーがあり、同じヘッダーが ComboBox の項目になる必要があります。ComboBox から選択した場合、対応するタブをアクティブにする必要があります。

ComboBox での私のセットアップは次のとおりです。

   <Window.Resources>
        <DataTemplate x:Key="EmployeeListTemplate">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Header}" />
            </StackPanel>
        </DataTemplate>
    </Window.Resources>

..そしてXamlのさらに下に...

<ComboBox Grid.Row="1" Width="500" Name="qlist"
ItemsSource="{Binding ElementName=tabControl1, Path=Items}" 
ItemTemplate="{StaticResource EmployeeListTemplate}" />

したがって、TabControl の Item コレクションにバインドし、表示する SelectedItem のプロパティとして Header を選択するだけです。

それは機能し、ComboBox をクリックすると、ヘッダーは実際に個々のテキスト項目として表示されます。しかし、実際に選択すると、そのタブ自体がそのコンボボックスの選択領域にレンダリングされます!

これを修正するにはどうすればよいですか? リストに Header プロパティを使用しているのに、リストから選択すると、表示される値が実際の TabItem オブジェクトになるのはなぜですか? 明らかな何かが欠けているように感じます

ところで、ナビゲーションを制御するためにこれを使いたいと言ったのは知っていますが、それをすべて取り除きました。

コンボボックスに適切なアイテムを表示する

注意深く見てください - コンボボックスから tabItem1 を選択すると、実際にはコントロール内のそのタブ項目が再レンダリングされます。リスト項目が使用する標準の青い選択背景に囲まれた上部を見ることができます。腹立たしい。

コンボボックスでの tabItem の描画

ここで何が間違っていますか?助けてくれてありがとう

4

1 に答える 1