WPF 窗口自適應


    窗口自適應就是說,當主窗口縮放的時候,內部的控件位置自動的調整,而不是隱藏掉。這主要依賴於Grid布局。

    1.比如這個groupbox 本身是在一個Grid的Row中的。縮放之后,左邊的button不見了。 

    開始:

    

    縮放之后:

   

   <GroupBox Name="EmailGroupBox" Grid.Row="1" Grid.Column="0" Header="電子郵件" Margin="0,10,10,10" >
                    <StackPanel Name="Panel"  Orientation="Horizontal">
                        <Grid Name="MinGrid" Width="{Binding ElementName=Panel, Path=ActualWidth}">
                            <Grid.RowDefinitions>
                                <RowDefinition MinHeight="20" Height="Auto"></RowDefinition>
                                <RowDefinition MinHeight="1" Height="*"></RowDefinition>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition MinWidth="60" Width="Auto"></ColumnDefinition>
                                <ColumnDefinition Width="*" MinWidth="100"></ColumnDefinition>
                                <ColumnDefinition MinWidth="70" Width="Auto" ></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <Label Grid.Row="0" Grid.Column="0"  HorizontalAlignment="Left" >郵件地址:</Label>
                            <TextBox   TabIndex="1"  Grid.Row="0" Grid.Column="1" MinWidth="100"  Text="{Binding ServerEmailAddress, UpdateSourceTrigger=LostFocus}"  HorizontalAlignment="Stretch"  VerticalContentAlignment=                            "Center"></TextBox>
                            <Button  Grid.Row="0"  TabIndex="2" Grid.Column="2" HorizontalAlignment="Stretch"  Margin="5 0 5 0"  Click="EmailConfigButton_Click">設置</Button>
                        </Grid>

                    </StackPanel>
                </GroupBox>

拿掉 StackPanel就可以縮放(本身也是多余的代碼)。最小寬高都可以省略。因為這里的最小寬度無法阻擋主窗口的縮放,最小寬高直接放到子控件上面就行,不必放在Row或col上面。 2個row也是多余 修改之后:

   <GroupBox Name="EmailGroupBox" Grid.Row="1" Grid.Column="0" Header="電子郵件" Margin="0,10,10,10" >
                    <Grid Name="MinGrid" Width="{Binding ElementName=Panel, Path=ActualWidth}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition />
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <Label Grid.Row="0" Grid.Column="0"  HorizontalAlignment="Left" >郵件地址:</Label>
                        <TextBox   TabIndex="1"  Grid.Row="0" Grid.Column="1" MinWidth="100"  Text="{Binding ServerEmailAddress, UpdateSourceTrigger=LostFocus}"  HorizontalAlignment="Stretch"  VerticalContentAlignment="Center"></TextBox>
                        <Button  Grid.Row="0"  TabIndex="2" Grid.Column="2" HorizontalAlignment="Stretch"  Margin="5 0 5 0"  Click="EmailConfigButton_Click">設置</Button>
                    </Grid>
                </GroupBox>
View Code

但也不是說StackPanel 就不能縮放。下面的StackPanel是有縮放的效果的。 

 <StackPanel Margin="5" Orientation="Horizontal" Grid.Row="3">
                    <Button   TabIndex="4"  HorizontalAlignment="Left" Click="AddCustomer" Width="62" Height="28" >新建</Button>
                    <Button   HorizontalAlignment="Left" TabIndex="5"  Click="DeleteCustomer"  Width="62" Margin="20,0,0,0" Height="28" VerticalAlignment="Bottom" >刪除</Button>
  </StackPanel>

 和groupbox組合的時候要注意。

 

 

 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM