拉伸路径以填充容器

Stretch Path to fill container

我有这样定义的资源:

<Canvas x:Key="export"
        Width="48"
        Height="48">
    <Path Fill="{DynamicResource CurrentColor}"
          Data="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" />
</Canvas>

我是这样使用它的:

<ItemsControl.ItemTemplate>
    <DataTemplate>
        <Button Margin="10,5,10,10"
                Width="Auto"
                Height="Auto">
            <Button.Template>
                <ControlTemplate TargetType="Button">
                    <Rectangle Width="48"
                                Height="48"
                                Fill="{DynamicResource CurrentColor}">
                        <Rectangle.OpacityMask>
                            <VisualBrush Stretch="Fill"
                                            Visual="{Binding}" />
                        </Rectangle.OpacityMask>
                    </Rectangle>
                </ControlTemplate>
            </Button.Template>
        </Button>
    </DataTemplate>
</ItemsControl.ItemTemplate>

可以看出,我正在尝试将矩形大小设置为 48x48,但资源中的路径数据坐标被定义为将其绘制为 24x24。无论我尝试什么,我都无法拉伸资源来填充按钮。如何做呢?

如果需要,我愿意更改按钮实现。我所需要的只是能够以某种颜色显示按钮中的图标。

尝试使用 HorizontalAlignment="Stretch"VerticalAlignment="Stretch"

但是如果设置了 WidthHeight,它们将优先于 Stretch 设置。参见 Microsoft on HorizontalAlignment

删除 canvas 并在 Path 上使用 Stretch="Uniform"。如果要减少 Path 的 height/width,请将其添加到例如。 Grid 或仅设置 PathWidthHeight:

<Grid Width="48" Height="48">
        <Path Fill="{DynamicResource CurrentColor}"
              Stretch="Uniform"
              Data="M23,12L19,8V11H10V13H19V16M1,18V6C1,4.89 1.9,4 3,4H15A2,2 0 0,1 17,6V9H15V6H3V18H15V15H17V18A2,2 0 0,1 15,20H3A2,2 0 0,1 1,18Z" />
</Grid>