c# - 在可拉伸(stretch)的 WPF 窗口中将两个控件布局在一条线上

标签 c# wpf xaml layout

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

尝试在 WPF 中复制它似乎非常困难。

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

最佳答案

您将创建另一个 GridControl有两列,一列的宽度固定为 Browse按钮和另一个 TextBox .

<Grid>            
    <Grid.ColumnDefinitions> 
        <ColumnDefinition />
        <ColumnDefinition Width="75" />
    </Grid.ColumnDefinitions>
    <TextBox Grid.Column="0" />
    <Button Grid.Column="1" />
</Grid>

关于c# - 在可拉伸(stretch)的 WPF 窗口中将两个控件布局在一条线上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7308319/

相关文章:

xaml - 将 IMarkupExtension 与 StringFormat 一起使用

c# - 隐藏 ServiceStack 服务请求和响应 DTO 中的一些公共(public)属性

C# Winforms WebBrowser 在默认浏览器中打开链接

c# - 使用 MVVM 从 WPF 中的 TextBox 进行正确的 DataGrid 搜索

c# - Windows 8 C# : Windows. Ui.Xaml.Media.ImageSource 更改图像

C# DataGridTextColumn 换行符

c# - Mahapps中如何获取ShowInputAsync Dialog的结果

WPF Datagrid 行颜色基于值

c# - 如何使用SQLitePCL在C#Windows Phone App中检查插入操作是否成功

c# - 在 C# 中按值传递引用类型