C# 左右对齐网格元素并拉伸按钮WPF上的中心柱
一个按钮上有三个文本块。希望将第0列和第2列textblock分别锚定在按钮的左边缘和右边缘,而第1列textblock占用多余的空间。如何做到这一点C# 左右对齐网格元素并拉伸按钮WPF上的中心柱,c#,wpf,xaml,C#,Wpf,Xaml,一个按钮上有三个文本块。希望将第0列和第2列textblock分别锚定在按钮的左边缘和右边缘,而第1列textblock占用多余的空间。如何做到这一点 <Grid Width="150" Height="50"> <Button Style="{StaticResource GrayStyleButton}"> <Grid> <Grid.ColumnDefinitions>
<Grid Width="150" Height="50">
<Button
Style="{StaticResource GrayStyleButton}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
FontSize="12"
Text="+">
</TextBlock>
<TextBlock
Grid.Column="1"
FontSize="12"
Text="Page1_b2">
</TextBlock>
<TextBlock
Grid.Column="2"
FontSize="12"
Text="+">
</TextBlock>
</Grid>
</Button>
</Grid>
我希望您在静态样式资源中使用适当的边距值和其他缩进属性。为按钮和网格提供HorizontalAlignment=“Stretch”
<Button HorizontalContentAlignment="Stretch">
<Grid Width="{Binding}" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
FontSize="12"
Text="+" />
<TextBlock Grid.Column="1"
FontSize="12"
Text="Page1_b2" />
<TextBlock Grid.Column="2"
FontSize="12"
Text="+" />
</Grid>
</Button>
或者,您可以将图像和文本块放在stackpanel内(Orientation=“HorizontalAlignment”
),一个图像带有HorizontalAlignment=“Left”
,文本块带有HorizontalAlignment=“Center”
,另一个图像带有HorizontalAlignment=“Right”
。只需将HorizontalContentAlignment=“Stretch”
添加到按钮
元素。现在您获得XAML的方式是,按钮的子按钮网格自动调整大小以适应其内容。因此,虽然第0列和第2列保持相同的大小,第1列始终拉伸以使用网格中的剩余空间,但网格本身会根据文本的长度改变大小。设置按钮。HorizontalContentAlignment
属性将告诉按钮
始终使网格
在按钮
中尽可能大。谢谢。现在可以了。我必须删除“StaticResource GrayStyleButton”引用才能使HorizontalContentAlignment=“Stretch”正常工作。静态资源似乎正在重写stretch语句。
<Button HorizontalContentAlignment="Stretch">
<Grid Width="{Binding}" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
FontSize="12"
Text="+" />
<TextBlock Grid.Column="1"
FontSize="12"
Text="Page1_b2" />
<TextBlock Grid.Column="2"
FontSize="12"
Text="+" />
</Grid>
</Button>