3

パスを使用してヘッダーの形状を定義し、TabItemヘッダーのスタイルを設定しようとしています。

私は解決できないように見える問題で立ち往生しています:

パスのStretchプロパティを「None」に設定した場合、TabItemヘッダーのテキストが長いとスケーリングされません。

パスのStretchプロパティを"Fill"に設定すると、各TabItemヘッダーがTabControlと同じ幅になるようにストレッチされます。つまり、1行に非常に幅の広いTabItemヘッダーが1つだけになります。

(TabItemHeaderコンテンツに応じて)レイアウトへのパスを拡大する方法を知っていますが、それ以上はありませんか?

誰かがこれについて私を助けてくれるなら、私はとても嬉しいです...私が解決策を探している間、それは迷惑でした。

ありがとうございました :-)

4

2 に答える 2

5

サンプルコードを追加しない場合は難しいですが、HeaderTemplateが次のようになっていると言うと、パスの幅をTextBlockのActualWidthにバインドできます。

<TabItem.HeaderTemplate>
    <DataTemplate>
        <Border x:Name="grid">
            <Grid>
                <Path Data="..."
                      Stretch="Fill"
                      Width="{Binding ElementName=grid, Path=ActualWidth}" />
                <TextBlock Name="textBlock"
                           Margin="4"
                           FontSize="15"
                           Text="{Binding}"/>                                
            </Grid>
        </Border>
    </DataTemplate>
</TabItem.HeaderTemplate>
于 2010-11-14T17:00:27.873 に答える
1

ただし、レンダリングのパフォーマンスに注意してください。アクチュアル幅とアクチュアルハイトにバインドすると、UIが正しくレンダリングされていない限り、バインドエラーが発生します。そして、バインディングエラーは高価です...これを回避する最良の方法は、SizeChangedが呼び出されたときにコードでバインディングを設定することです。これは、測定とサイジングが終了した後の最初の瞬間です。

于 2012-03-22T09:51:16.207 に答える