簡體   English   中英

自動調整DockPanel中的多個TextBox的大小

[英]Auto-sizing multiple TextBox(es) within a DockPanel

我希望有人可以在這里幫助我。 我在基座面板中有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>

當窗口的大小調整為小於面板中所有內容的寬度時,當前這將使右側的面板全部消失。 我想縮小右側面板(嵌入式底座)的尺寸。 無需大量重寫就可以實現嗎? 我顯然遺漏了很多代碼...任何幫助將不勝感激。

UPDATE

我越來越近了,但仍然不是我想要的。 我添加了一個網格,可以進行拉伸,但是我希望所有內容都保持在右側。 意思是,我只想縮小而不是拉伸,而是固定在右邊。

這是現在的樣子。

 <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>

因此,這將所有內容都放在其空間內。 一旦將水平對齊方式設置為“右”,文本框就會像這樣被壓碎

在此處輸入圖片說明

有什么想法嗎?

這是由於文本框內容的優先級而發生的。 TextBox自身的寬度將始終等於其內容,因此,如果希望某些文本框具有不同的值,則應設置其Width屬性或設置其父級的Width屬性。

您可能對以下解決方案感興趣:

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

或這個:

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

甚至這個:

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

請注意MinWidth屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM