我希望有人可以帮助我。我在dockpanel中有2个文本框和一个按钮,我希望根据窗口大小获得2个文本框来拉伸和缩小。
我有一个dockpanel,左边有一堆菜单按钮,在这个底座内我有另一个带有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消失。我想让右侧面板(嵌入式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>
所以这是将所有内容集中在它所拥有的空间内。一旦我将水平对齐方式设置为“右”,文本框就会像这样被压缩
对此有何想法?
答案 0 :(得分:1)
由于文本框内容的优先级,这种情况正在发生。 TextBox
自己的宽度将始终等于其内容,因此如果您希望某些文本框具有不同的值,则应设置其Width
属性或设置其父级Width
属性。
您可能对我的解决方案感兴趣:
<TextBox Name="textBoxUsername" Width="100" ... />
或者这个:
...
<ColumnDefinition Width="110" />
<ColumnDefinition Width="110" />
<ColumnDefinition Width="100" />
...
甚至这个:
<TextBox Name="textBoxUsername" MinWidth="100" ... />
请注意MinWidth
属性。