在可拉伸的 WPF 窗口中在一行上布置两个控件

Cob*_*ger 2 c# wpf layout xaml

这是一个相当常见的 UI 模式:包含左侧路径的文本框和右侧的浏览按钮。如果窗口调整大小,按钮将保持在右侧,但文本框会拉伸以显示更多/更少的路径。所以在锚的过去,按钮将锚定在右侧,文本框将同时锚定在左侧和右侧。

试图在 WPF 中复制这一点似乎非常困难。

如果我创建一个新窗口,它默认带有网格布局。我将文本框放在左侧并适当调整大小,然后将按钮放在右侧。文本框的 Horizo​​ntalAlignment 是 Stretch,按钮的 Horizo​​ntalAlignment 是 Right。

在我看来,这如所描述的那样工作,但在现实生活中,文本框根本不会调整大小,而是尝试将自身居中在窗口中,而按钮则按预期工作。是什么赋予了?

这是我的 XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="241" d:DesignWidth="414" SizeToContent="WidthAndHeight">
    <Grid>
        <TextBox Height="23" HorizontalAlignment="Stretch" Name="textBox1" VerticalAlignment="Top" Margin="12,11,101,0" />
        <Button Content="Button" Height="23" HorizontalAlignment="Right" Margin="0,11,12,0" Name="button1" VerticalAlignment="Top" Width="75" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

far*_*jad 5

您将创建另一个GridControl包含两列的列,一列具有固定宽度的Browse按钮,另一列用于TextBox.

<Grid>            
    <Grid.ColumnDefinitions> 
        <ColumnDefinition />
        <ColumnDefinition Width="75" />
    </Grid.ColumnDefinitions>
    <TextBox Grid.Column="0" />
    <Button Grid.Column="1" />
</Grid>
Run Code Online (Sandbox Code Playgroud)