如何在WPF中使按钮内部的网格具有100%的宽度?

10

我在窗口上有一个可以根据窗口大小调整大小的按钮。我在按钮内放了一个具有一行两列的网格,将路径放在第一列中,将文本框放在第二列中。

我的问题是我无法使网格与按钮一起拉伸。

以下是发生的情况:

发生的情况

以下是我希望发生的情况:

输入图像描述

我已将网格的HorizontalAlignment设置为“Stretch”,但它并没有拉伸。 我在这里做错了什么?

以下是代码:

    <Window x:Class="GridInButtonIssue.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GridInButtonIssue"
        mc:Ignorable="d"
        Title="MainWindow" Height="136.5" Width="269.839">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Button x:Name="btn_SelectMode" Grid.Row="0" Margin="0,35,0,0" >
            <Grid HorizontalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="20" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="6*" />
                    <ColumnDefinition Width="4*" />
                </Grid.ColumnDefinitions>
                <Canvas x:Name="svg2" Grid.Column="0" Width="25" Height="25" HorizontalAlignment="Center">
                    <Canvas.RenderTransform>
                        <TranslateTransform X="0" Y="0"/>
                    </Canvas.RenderTransform>
                    <Canvas x:Name="layer1">
                        <Canvas.RenderTransform>
                            <TranslateTransform X="-298.50531" Y="-576.33075"/>
                        </Canvas.RenderTransform>
                        <Ellipse xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="298.6" Canvas.Top="576.4" Width="19.9" Height="19.9" x:Name="path4144" Fill="#FF951718" StrokeThickness="0.14452878" Stroke="#FFFD0000" StrokeMiterLimit="4" StrokeLineJoin="Miter" StrokeStartLineCap="Flat" StrokeEndLineCap="Flat" Opacity="1"/>
                    </Canvas>
                </Canvas>
                <TextBlock Grid.Column="1" Text="Test Button" HorizontalAlignment="Left" />
            </Grid>
        </Button>
    </Grid>
</Window>
1个回答

11

您需要直接在 Button 上将HorizontalContentAlignment设置为Strech,如下所示:

<Window x:Class="GridInButtonIssue.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GridInButtonIssue"
        mc:Ignorable="d"
        Title="MainWindow" Height="136.5" Width="269.839">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Button x:Name="btn_SelectMode" Grid.Row="0" Margin="0,35,0,0" HorizontalContentAlignment="Stretch" >
      <Grid HorizontalAlignment="Stretch">
        <Grid.RowDefinitions>
          <RowDefinition Height="20" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="6*" />
          <ColumnDefinition Width="4*" />
        </Grid.ColumnDefinitions>
        <Canvas x:Name="svg2" Grid.Column="0" Width="25" Height="25" HorizontalAlignment="Center">
          <Canvas.RenderTransform>
            <TranslateTransform X="0" Y="0"/>
          </Canvas.RenderTransform>
          <Canvas x:Name="layer1">
            <Canvas.RenderTransform>
              <TranslateTransform X="-298.50531" Y="-576.33075"/>
            </Canvas.RenderTransform>
            <Ellipse xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="298.6" Canvas.Top="576.4" Width="19.9" Height="19.9" x:Name="path4144" Fill="#FF951718" StrokeThickness="0.14452878" Stroke="#FFFD0000" StrokeMiterLimit="4" StrokeLineJoin="Miter" StrokeStartLineCap="Flat" StrokeEndLineCap="Flat" Opacity="1"/>
          </Canvas>
        </Canvas>
        <TextBlock Grid.Column="1" Text="Test Button" HorizontalAlignment="Left" />
      </Grid>
    </Button>
  </Grid>
</Window> 

看起来是这样的:

带内容的按钮


太棒了!谢谢你的帮助!! - user2109254

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接