1

これが私のカスタム ボタン テンプレートです。

<Button.Template>
    <ControlTemplate TargetType="{x:Type Button}">
        <Grid>
            <Path x:Name="Inner" Stretch="Fill" Fill="{TemplateBinding Background}" Data="F1 M 249.989,59.8321L 399.989,59.8321L 429.989,88.1654L 399.989,120.165L 249.989,120.165L 279.989,88.1654L 249.989,59.8321 Z ">
                <Path.Effect>
                    <DropShadowEffect BlurRadius="10" Opacity="0.5" ShadowDepth="4" />
                </Path.Effect>
            </Path>
            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
            <Path x:Name="Border" Stretch="Fill" Stroke="{TemplateBinding BorderBrush}" Data="F1 M 249.989,59.8321L 399.989,59.8321L 429.989,88.1654L 399.989,120.165L 249.989,120.165L 279.989,88.1654L 249.989,59.8321 Z " />
        </Grid>
    </ControlTemplate>
</Button.Template>

表示方法は次のとおりです。

ここに画像の説明を入力

私がやりたいのは、コンテンツに合うように2つのパスのサイズを調整することです。これはブレッドクラム カスタム コントロールの一部であり、各ブレッドクラムが必要なだけのスペースを占有するようにしたいと考えています。Path のサイズを ContentPresenter に合わせる方法がわかりません。

パスの幅と高さを ContentPresenters の幅と高さにバインドしようとしましたが、ダイスはありません:/

上の画像では、テキストは Path の幅と高さに収まっていますが、ContentPresenter からテキストを追加または削除しても、サイズが変更されないことに注意してください。

4

1 に答える 1

2

を使用して ContentPresenterの/にPathプロパティをバインドすることをお勧めします。ActualWidthActualHeightConverterPath.Data

2 つのプロパティ (Height と Width) が必要なため、IMultiValueConverterが必要になるか、次のように全体ContentPresenterをバインディングに渡す必要があります。

Path Data="{Binding ElementName=MyContentPresenter, 
                    Converter={StaticResource Path1Converter}}" />

また、常に絶対ポイントを使用する代わりに、小文字を使用してPath.Data相対ポイントを指定できることを忘れないでください。

于 2012-07-17T13:14:27.803 に答える