9

そのため、タブ内のタブ項目を水平方向に中央揃えにしたいと考えています。タブの背景も変更したいです。これらの両方に対する答えを見つけました:

これは、私がバックグラウンドで何をしたいのかを正確に説明し、解決策を提供します

これは、tabItemsを中央に配置する方法を説明しています

私が抱えている問題は、両方とも個別にうまく機能することですが、組み合わせると機能しません. tabItems はうまく中央に配置されていますが、背景色は私が指定した色ではありません。

例: コード:

<TabControl>
    <TabControl.Resources>
        <Style TargetType="{x:Type TabPanel}">
            <Setter Property="HorizontalAlignment" Value="Center" />
            <Setter Property="Background" Value="Red" />
        </Style>
    </TabControl.Resources>

    <TabItem Header="Test 1" />
    <TabItem Header="Test 2" />
    <TabItem Header="Test 3" />
    <TabItem Header="Test 4" />
</TabControl>

ヘルプ?

4

1 に答える 1

14

おお、問題を見つけるなんて悪夢だった。問題は、tabcontrol が使用するデフォルトのテンプレートにあります。

TabControl の DefaultTemplate

ストレッチ以外の何かに設定されている場合、TabPanel 自体は、グリッドで必要以上にいっぱいになりません。そのため、背景が表示されませんでした。

もう 1 つの問題は、ContentPanel の背景が、TabControl の背景にバインドされたテンプレートであったことです。そのため、掘り下げた後、タブコントロールを構成するグリッドのスタイルを背景でオーバーライドできることがわかりました.2番目の行の背景はテンプレートにバインドされているため、グリッドの最初の行のみを埋めます。

デフォルトのテンプレートを見ることで、私が何を得ているかを理解できるはずです。

これが機能する実際のコードです

<TabControl>
    <TabControl.Resources>
        <Style TargetType="{x:Type Grid}">
            <Setter Property="Background" Value="Red"/>
        </Style>
        <Style TargetType="{x:Type TabPanel}">
            <Setter Property="HorizontalAlignment" Value="Center"/>
        </Style>
    </TabControl.Resources>
    <TabItem Header="Test 1"/>
    <TabItem Header="Test 2"/>
    <TabItem Header="Test 3"/>
    <TabItem Header="Test 4"/>
</TabControl>

そして、これはそれがどのように見えるべきかです ここに画像の説明を入力

于 2013-11-08T17:04:11.697 に答える