这是我的自定义按钮模板:
<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中删除文本时,它不会调整大小。
答案 0 :(得分:2)
我建议将Path
属性绑定到ContentPresenter的ActualWidth
/ ActualHeight
,使用Converter
来计算Path.Data
由于需要两个属性(高度和宽度),您需要IMultiValueConverter,或者您需要将整个ContentPresenter
传递到绑定中,如下所示:
Path Data="{Binding ElementName=MyContentPresenter,
Converter={StaticResource Path1Converter}}" />
此外,不要忘记您可以在Path.Data
中使用小写字母来指定相对点,而不必总是使用绝对点。