如何在 WPF 中将宽度设置为 100%

Posted

技术标签:

【中文标题】如何在 WPF 中将宽度设置为 100%【英文标题】:How to set width to 100% in WPF 【发布时间】:2010-10-21 16:58:51 【问题描述】:

有没有办法告诉 WPF 中的组件占用 100% 的可用空间?

喜欢

width: 100%;  

在 CSS 中

我有这个 XAML,但我不知道如何强制 Grid 采用 100% 宽度。

<ListBox Name="lstConnections">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <Grid Background="LightPink">
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="Auto"/>
          <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
          <RowDefinition Height="Auto"/>
          <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0" Grid.Column="0" Text="Binding Path=User" Margin="4"></TextBlock>
        <TextBlock Grid.Row="0" Grid.Column="1" Text="Binding Path=Password" Margin="4"></TextBlock>
        <TextBlock Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Text="Binding Path=Host" Margin="4"></TextBlock>
      </Grid>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

结果看起来像

alt text http://foto.darth.cz/pictures/wpf_width.jpg

我把它变成了粉红色,所以很明显它需要多少空间。我需要将粉色网格设为 100% 宽度。

【问题讨论】:

链接已失效... @MartiniBianco 对不起,这个问题已经 8 年了。我什至不记得图像中的内容,从那时起我也没有使用过 WPF。 【参考方案1】:

强加于其宽度的是Grid 的容器。在这种情况下,这是一个ListBoxItem,默认情况下是左对齐的。您可以将其设置为拉伸,如下所示:

<ListBox>
    <!-- other XAML omitted, you just need to add the following bit -->
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="HorizontalAlignment" Value="Stretch"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

【讨论】:

一个小提示 - 如果您尝试在 Windows 商店应用程序中执行此操作,您必须使用与上述相同的方法实际设置 HorizontalContentAlignment【参考方案2】:

你可以使用HorizontalContentAlignment="Stretch"如下:

<ListBox HorizontalContentAlignment="Stretch"/>

【讨论】:

以上是关于如何在 WPF 中将宽度设置为 100%的主要内容,如果未能解决你的问题,请参考以下文章

在响应式框架中将 LI 设置为 100% 高度

WPF宽度100%,我想wpf的子控件的宽度跟父控件的宽度一样,当父控件宽度改变的时候子控件随着改变,请问有啥!

在 CSS3 或 jQuery 中将元素的宽度从 0% 设置为 100% 动画,它和它的包装器只需要它们需要的宽度,没有预先设置的宽度

如何css宽度设置为包含内容,高度设置为100%?

如何在 C# WPF(运行时)中将 Dependency Property propertymetadata 设置为 LinearGradientBrush?

如何使用 Tailwind CSS 将宽度设置为 100% 以上