0

我希望有人可以在这里帮助我。我在停靠面板中有 2 个文本框和一个按钮,我想让 2 个文本框根据窗口大小进行拉伸和收缩。

我有一个停靠面板,左侧包含一堆菜单按钮,在这个停靠栏内我有另一个停靠栏,其中包含 2 个文本框和一个按钮。当我调整主窗口的大小时,我希望右扩展坞缩小文本框,以便右扩展坞在碰到左扩展坞时不会消失。这有意义吗?

    <DockPanel LastChildFill="False">
        <Button DockPanel.Dock="Left" Margin="5, 0, 0, 0" Name="button1" Content="1" FontSize="10" Foreground="#FF565656" Width="64" Height="40"/>
        <Button DockPanel.Dock="Left" Margin="5, 0, 0, 0" Name="button2"  MinWidth="25" />

        <DockPanel LastChildFill="False" DockPanel.Dock="Right" Margin="5, 0, 5, 0">
                <TextBox DockPanel.Dock="Left" Name="textBoxUsername" Text="" TextWrapping="Wrap" ToolTip="Enter username" FontSize="11" FontWeight="Normal" Height="20" HorizontalAlignment="Left" Width="90" d:LayoutOverrides="GridBox" KeyUp="textBoxUsername_KeyUp" />
                <PasswordBox Margin="5, 0, 0, 0" DockPanel.Dock="Left" Name="textBoxPassword" ToolTip="Enter password" Height="20" d:LayoutOverrides="HorizontalAlignment, GridBox" Width="90" KeyUp="textBoxPassword_KeyUp" />
                <Button DockPanel.Dock="Left" Margin="5, 0, 0, 0" Name="buttonLogin" Content="Login" Height="20" MinWidth="70" Click="buttonLogin_Click" Width="500" />
            </DockPanel>
    </DockPanel>

当窗口的大小调整到面板中所有内容的宽度以下时,这目前只会让正确的停靠面板一起消失。我想让右面板(嵌入式停靠面板)缩小尺寸。如果没有大量的重写工作,这可能吗?我显然遗漏了很多代码......任何帮助将不胜感激。

更新

我越来越近了,但仍然不是我所希望的。我添加了一个网格,这允许拉伸,但我希望让所有东西都静止在右边。意思是,我只想收缩,而不是拉伸,而是将其固定在右侧。

这是它现在的样子。

 <DockPanel LastChildFill="False">
    <Button DockPanel.Dock="Left" Margin="5, 0, 0, 0" Name="button1" Content="1" FontSize="10" Foreground="#FF565656" Width="64" Height="40"/>
    <Button DockPanel.Dock="Left" Margin="5, 0, 0, 0" Name="button2"  MinWidth="25" />
         <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" MaxWidth="110" />
                    <ColumnDefinition Width="*" MaxWidth="110" />
                    <ColumnDefinition Width="100"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <TextBox Name="textBoxUsername" Text="" TextWrapping="Wrap" ToolTip="Enter username" FontSize="11" FontWeight="Normal" FontStyle="Normal" Foreground="#FF9C9C9C" FontFamily="Arial Unicode MS" Height="20" d:LayoutOverrides="GridBox" KeyUp="textBoxUsername_KeyUp" Margin="5,13,5,0" MaxWidth="110" VerticalAlignment="Center" HorizontalAlignment="Stretch" />
                <PasswordBox Grid.Column="1" Margin="5,13,5,0" Name="textBoxPassword" ToolTip="Enter password" Height="20" d:LayoutOverrides="HorizontalAlignment, GridBox" KeyUp="textBoxPassword_KeyUp" MaxWidth="110" VerticalContentAlignment="Center" />
                <Button Grid.Column="2" DockPanel.Dock="Left" Margin="5,13,5,0" Name="buttonLogin" Content="Login" Template="{StaticResource ButtonControlTemplate2}"  FontFamily="Arial" BorderBrush="{x:Null}" Background="{x:Null}" Height="20" MinWidth="70" Click="buttonLogin_Click" />
            </Grid>
 </DockPanel>

因此,这是将所有内容集中在其拥有的空间内。一旦我将水平对齐设置为“右”,文本框就会像这样被压碎

在此处输入图像描述

对此有什么想法吗?

4

1 回答 1

1

这是因为文本框内容的优先级而发生的。自己的TextBox宽度将始终等于其内容,因此如果您希望某些文本框具有不同的值,您应该设置它们的Width属性或设置其父级的Width属性。

您可能对我的解决方案感兴趣:

<TextBox Name="textBoxUsername" Width="100" ... />

或这个:

...
<ColumnDefinition Width="110" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="100" />
...

甚至这样:

<TextBox Name="textBoxUsername" MinWidth="100" ... />

注意MinWidth属性。

于 2013-09-05T13:29:10.170 回答