1

ヘッダーがそのサイズを考慮できるように、sのヘッダーのUIElement右側に何か(カスタム)を配置する方法はありますか?TabItem

彼らのためのデータテンプレートがあるべきだと思いますが、何を読むべきか、それをグーグルに問い合わせる方法がわかりません。

代替テキストhttp://trotsenko.com.ua/files/sample.png

4

1 に答える 1

2

その場所にコンテンツを配置する簡単な方法はありませんが、方法はあります。ControlTemplateこれを行うには、のデフォルトをオーバーライドする必要がありますTabControl

ほとんどのシステムテーマは、TabPanel(タブがある場所)とタブの内容を次のGridように配置します。

<ControlTemplate TargetType="{x:Type TabControl}">
                    <Grid KeyboardNavigation.TabNavigation="Local"
                          SnapsToDevicePixels="true"
                          ClipToBounds="true">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition x:Name="ColumnDefinition0"/>
                            <ColumnDefinition x:Name="ColumnDefinition1"
                                              Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition x:Name="RowDefinition0"
                                           Height="Auto"/>
                            <RowDefinition x:Name="RowDefinition1"
                                           Height="*"/>
                        </Grid.RowDefinitions>
                        <TabPanel x:Name="HeaderPanel"
                                  Panel.ZIndex ="1" 
                                  KeyboardNavigation.TabIndex="1"
                                  Grid.Column="0"
                                  Grid.Row="0"
                                  Margin="2,2,2,0"
                                  IsItemsHost="true"/>

                        <Border x:Name="ContentPanel"
                                BorderThickness="0,0,1,1"
                                BorderBrush="#D0CEBF"
                                KeyboardNavigation.TabNavigation="Local"
                                KeyboardNavigation.DirectionalNavigation="Contained"
                                KeyboardNavigation.TabIndex="2"
                                Grid.Column="0" Grid.ColumnSpan="2"
                                Grid.Row="1">
...

...

...
                        </Border>
                    </Grid>
...
                </ControlTemplate>

したがって、別のContentControlをグリッドに追加して、カスタムの添付プロパティにバインドすることができます。デフォルトのControlTemplatesには、特にオーバーフロー処理を制御するトリガーが多数あることに注意してください。追加のUI要素がそれを妨げないようにする必要があります。

ただし、TabControlの向きやオーバーフローに対処する必要がない場合は、このようなものをかなり迅速に取得できるはずです。

赤い境界線とTextBlockを持つ3つのTabItemshttp://img35.imageshack.us/img35/3237/tabpanelexample.png

幸運を!

于 2009-05-29T22:53:40.747 に答える