设2控制相同尺寸的自动填充空间

时间:2017-09-11 14:21:57

标签: wpf xaml

我希望两个texbox填充面板中的可用空间。但两者都必须包含相同的宽度。所以DockPanel lastchildfill在这里不起作用。

我有一个你可以看到的图像,我只创建了2个没有任何宽度的文本框。空白空间应该由两个文本框填充,如上所述(上面是手动宽度=" xxx"但我不想'想像这样硬核。

我希望它像Grid.Column width =" *" enter image description here

我是否必须为每个面板创建Grid? (会有更多的文本框)

我的XAML很简单,因为我不知道如何实现我的想法:

<DockPanel LastChildFill="False">
    <TextBox DockPanel.Dock="Left" x:Name="nachname_textbox"/>
    <TextBox DockPanel.Dock="Right" x:Name="vorname_textbox"/>
</DockPanel>

2 个答案:

答案 0 :(得分:2)

UniformGrid控制可能适合您的需要:它会自动将所有控件放置在单元格中,每个控件都具有相同的宽度和高度。您可以定义所需的行数和列数。

<UniformGrid Columns=2>
    <TextBox />
    <TextBox/>
</UniformGrid>

答案 1 :(得分:-1)

如果您希望两个元素填充au run每个可用宽度的50%,则应在每个Panel中添加Grid两个ColumnDefinitions,即只需将Panel替换为DockPanel

即可
Grid

如果您想减少XAML的数量,可以创建自己的自定义<Grid> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <TextBox /> <TextBox Grid.Column="1" /> </Grid> 类:

Grid

...并使用这个:

public class My2x2Grid : Grid
{
    public My2x2Grid()
    {
        ColumnDefinitions.Add(new ColumnDefinition());
        ColumnDefinitions.Add(new ColumnDefinition());
    }
}