2014-10-09 63 views
0

GroupBox我有兩個網格:第一個包含可以包含大量文本框,以便我添加了一個ScrollViewer,第二個包含必須總是可見的動作按鈕。 上面的第二個GroupBox有一個Expander,問題是當它被展開並且第一個網格有足夠的元素時,它會用按鈕覆蓋第二個網格。我怎樣才能解決這個問題?Grid覆蓋另一個在WPF中調整大小

這裏我的代碼:

<Window x:Class="ControlOverlayBug.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="269" Width="454"> 
<DockPanel Background="LightGray" SnapsToDevicePixels="True"> 
    <GroupBox DockPanel.Dock="Top" Header="Simulation Parameters"> 
     <DockPanel> 
      <Expander DockPanel.Dock="Bottom" x:Name="AlgoParams" Header="Change Us..."> 
       <Grid x:Name="parameterGrid"> 
        <DataGrid 
          RowHeaderWidth="0" 
          ItemsSource="{Binding AlgoParameters}" 
          AutoGenerateColumns="False" 
          GridLinesVisibility="None" 
          CanUserAddRows="False" 
          CanUserDeleteRows="False" 
          CanUserReorderColumns="False"> 
         <DataGrid.Columns> 
          <DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="1*" IsReadOnly="True"/> 
          <DataGridTextColumn Header="Description" Binding="{Binding Description}" Width="1*"/> 
          <DataGridTextColumn Header="Value" Binding="{Binding Value}" Width="1*"/> 
         </DataGrid.Columns> 
        </DataGrid> 
       </Grid> 
      </Expander> 
     </DockPanel> 
    </GroupBox> 

    <GroupBox DockPanel.Dock="Bottom" Header="Other Parameters"> 
     <DockPanel x:Name="BindPanel" VerticalAlignment="Stretch"> 
      <ScrollViewer VerticalScrollBarVisibility="Auto" DockPanel.Dock="Top" > 
       <Grid x:Name="paramGrid" Margin="3" Background="Yellow"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="30"/> 
         <ColumnDefinition Width="200*"/> 
         <ColumnDefinition Width="5"/> 
         <ColumnDefinition Width="363*"/> 
        </Grid.ColumnDefinitions> 
        <Grid.RowDefinitions> 
         <RowDefinition/> 
         <RowDefinition/> 
         <RowDefinition/> 
        </Grid.RowDefinitions> 
        <GridSplitter Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ResizeDirection="Columns" Width="5" Height="Auto" ShowsPreview="false"/> 
        <Label Content="ID" FontWeight="Bold" HorizontalAlignment="Center"/> 
        <Label Content="Name" Grid.Column="1" FontWeight="Bold" HorizontalAlignment="Left"/> 
        <Label Content="Values" Grid.Column="3" FontWeight="Bold" HorizontalAlignment="Left"/> 

        <TextBlock Grid.Row="1" Text="1"/> 
        <TextBlock Grid.Row="1" Grid.Column="1" Text="p10"/> 
        <TextBlock Grid.Row="1" Grid.Column="4" Text="bla"/> 

        <TextBlock Grid.Row="2" Text="2"/> 
        <TextBlock Grid.Row="2" Grid.Column="1" Text="p11"/> 
        <TextBlock Grid.Row="2" Grid.Column="4" Text="blub"/> 
       </Grid> 
      </ScrollViewer> 

      <Grid DockPanel.Dock="Bottom" VerticalAlignment="Bottom" Background="AliceBlue" MinHeight="30"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="123"/> 
        <ColumnDefinition Width="*"/> 
        <ColumnDefinition Width="Auto"/> 
       </Grid.ColumnDefinitions> 
       <Button Content="_Load Settings" HorizontalAlignment="Left"/> 
       <Button Content="_Save Settings" Grid.Column="1" HorizontalAlignment="Left"/> 
       <Button Content="_Run Simulation" Grid.Column="2" HorizontalAlignment="Right"/> 
      </Grid> 
     </DockPanel> 
    </GroupBox> 
</DockPanel> 

在此先感謝!

回答

0

好,而不是,我由一個Grid兩行改變DockPanel(名爲BindPanel)(第2行有一個固定的高度)解決了這個問題它的工作原理。這裏有趣的部分:

<GroupBox DockPanel.Dock="Bottom" Header="Other Parameters"> 
     <Grid x:Name="BindPanel" VerticalAlignment="Stretch" Background="Beige"> 
      <Grid.RowDefinitions> 
       <RowDefinition/> 
       <RowDefinition Height="24"/> 
      </Grid.RowDefinitions> 
      <ScrollViewer VerticalScrollBarVisibility="Auto" VerticalAlignment="Top"> 
       ... 
      </ScrollViewer> 

      <!-- grid wih buttons --> 
     </Grid> 
    </GroupBox> 
0

給您的ScrollViewer一個MaxHeight獲得滾動工作重疊

+0

不幸的是,它不能解決問題。擴展器仍然覆蓋網格。 – alex555 2014-10-10 08:01:42

+0

典型的擴展器使用位於窗口的底部。我想你可能需要稍微檢查一下你的設計。我發現窗戶在初始狀態下有一個固定的高度,裏面的東西有一個動態的高度。這肯定會導致重疊。 – HichemSeeSharp 2014-10-10 08:10:08

相關問題