如何拉伸Button内的Rectangle?

时间:2013-11-27 08:51:45

标签: wpf xaml

我有以下窗口:

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"
        Width="525"
        Height="350">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.Resources>
            <DrawingBrush x:Key="_2_Agenda" Stretch="Uniform">
                <DrawingBrush.Drawing>
                    <DrawingGroup>
                        <DrawingGroup.Children>
                            <GeometryDrawing Brush="#FF000000" Geometry="F1 M 9.36198,78.5885L 9.36198,100L 29.362,100L 29.362,78.5885L 9.36198,78.5885 Z " />
                            <GeometryDrawing Brush="#FF000000" Geometry="F1 M 36.1875,69.6576L 36.1875,100L 56.1875,100L 56.1875,69.6576L 36.1875,69.6576 Z " />
                            <GeometryDrawing Brush="#FF000000" Geometry="F1 M 63.0137,49.5989L 63.0137,100L 83.0137,100L 83.0137,49.5989L 63.0137,49.5989 Z " />
                            <GeometryDrawing Brush="#FF000000" Geometry="F1 M 89.8379,36.1133L 89.8379,100L 109.838,100L 109.838,36.1133L 89.8379,36.1133 Z " />
                        </DrawingGroup.Children>
                    </DrawingGroup>
                </DrawingBrush.Drawing>
            </DrawingBrush>
        </Grid.Resources>

        <Rectangle Fill="{StaticResource _2_Agenda}" />
        <Button Grid.Column="1">
            <Image Source="/WpfApplication8;component/Images/accept_32x32.png" />
        </Button>
        <Button Grid.Column="2">
            <Button.ContentTemplate>
                <DataTemplate>
                    <Rectangle Fill="{StaticResource _2_Agenda}"/>
                </DataTemplate>
            </Button.ContentTemplate>
        </Button>
    </Grid>
</Window>

在第0列和第1列中,图标被拉伸。但是第2列中的矩形被压缩为0像素。我可以设置宽度和宽度明确的高度,但我想用窗口拉伸它,就像第0列和第1列一样。我该怎么做?或者我不应该首先使用GeometryDrawing和DrawingBrush?

此资源是从Expression Design导出的,所以如果我以不同的方式创建资源,转换所有图标可能会花费很多工作。

1 个答案:

答案 0 :(得分:1)

默认情况下,按钮的内容不会拉伸,输入一些文本会将其放在按钮的中心。您可以通过HorizontalContentAlignmentVerticalContentAlignment属性控制此行为。

<Button Grid.Column="2" 
        HorizontalContentAlignment="Stretch" 
        VerticalContentAlignment="Stretch"> 
        ...
</Button>

当中心对齐时,内容的布局行为会有所不同:按钮会询问矩形“你需要多大?”。由于没有定义宽度或高度,因此默认为零。拉伸时会告诉矩形:'尽可能填充这个空间'。