我有以下窗口:
<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导出的,所以如果我以不同的方式创建资源,转换所有图标可能会花费很多工作。
答案 0 :(得分:1)
默认情况下,按钮的内容不会拉伸,输入一些文本会将其放在按钮的中心。您可以通过HorizontalContentAlignment
和VerticalContentAlignment
属性控制此行为。
<Button Grid.Column="2"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch">
...
</Button>
当中心对齐时,内容的布局行为会有所不同:按钮会询问矩形“你需要多大?”。由于没有定义宽度或高度,因此默认为零。拉伸时会告诉矩形:'尽可能填充这个空间'。