代码之家  ›  专栏  ›  技术社区  ›  Andy

如何确保WPF网格中的列具有最小宽度?

wpf
  •  -1
  • Andy  · 技术社区  · 7 年前

    我正在WPF中创建一个简单的GUI:

    enter image description here

    我将三个GUI元素安排在一个网格中。 当我调整窗口大小时,我希望第一列和最后一列的宽度保持不变,中间列的大小占据所有剩余的宽度。 不幸的是,我把窗户弄得很窄;按钮隐藏:

    enter image description here

    我做错了什么?

    <Grid>
        <Grid Margin="10,0,10,10" MinWidth="200">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="1*" />
                <ColumnDefinition Width="85" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="1*" />
            </Grid.RowDefinitions>
            <Button Content="Select..." Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Stretch" Width="75" MinWidth="75"/>
            <TextBox Margin="0,0,0,0" TextWrapping="Wrap" Text="" Width="Auto" Height="20" Grid.Column="1"/>
            <Label Content="File path:" HorizontalAlignment="Center" Margin="0,0,0,0" VerticalAlignment="Center"/>
        </Grid>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Nawed Nabi Zada    7 年前

    如果窗口的大小不应小于某个宽度,请在窗口属性中定义。

    如果要在窗口小于某个大小(网格大小)时显示ScrollViewer,请添加ScrollViewer

    编辑:

    你能做的就是绑定你的窗口。MinWidth=网格的实际宽度。

    将网格命名为:

    <Grid x:Name="MyGrid">
    

    然后像这样把窗户绑在中间:

     MinWidth="{Binding ElementName=MyGrid, Path=ActualWidth, Mode=OneTime}"