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 路径的大小,使其适合内容。这是面包屑自定义控件的一部分,我希望每个面包屑只占用所需的空间。我不知道如何将路径调整为 ContentPresenter 的大小。

我尝试将路径的宽度和高度绑定到 ContentPresenters 的宽度和高度,但没有骰子:/

请注意,在上图中,文本适合路径的宽度和高度,但是,当我从 ContentPresenter 添加文本或删除文本时,它不会调整大小。

4

1 回答 1

2

我建议将Path属性绑定到 ContentPresenter 的ActualWidth/ ActualHeight,使用 aConverter来计算Path.Data

由于需要两个属性(高度和宽度),因此您需要一个IMultiValueConverter,或者您需要将整个属性传递ContentPresenter到您的绑定中,如下所示:

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

另外,不要忘记您可以在您的文件中使用小写字母Path.Data来指定相对点,而不必总是使用绝对点。

于 2012-07-17T13:14:27.803 回答