2013-04-12 17 views
5

Tôi có rất nhiều kinh nghiệm về C# và WinForms nhưng là một người mới sử dụng WPF. Tôi có một cửa sổ với một Expander mở rộng xuống. Giống như hộp câu hỏi tôi hiện đang nhập, tôi muốn người dùng có thể tự động thay đổi kích thước Expander bằng cách nhấp vào hình chữ nhật ở dưới cùng (như hộp câu hỏi này) và kéo giãn đến kích thước mong muốn.Cho phép người dùng thay đổi kích thước Expander trong WPF

Có ai có thể cung cấp XAML (và bất kỳ mã bổ sung nào) để thực hiện việc này không?

Đây là những gì tôi có cho đến nay:

<Expander Header="Live Simulations" Name="expandLiveSims" Grid.Row="0" ExpandDirection="Down" IsExpanded="True"> 
    <Expander.Background> 
     <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
      <GradientStop Color="White" Offset="0" /> 
      <GradientStop Color="LightGray" Offset="0.767" /> 
      <GradientStop Color="Gainsboro" Offset="1" /> 
     </LinearGradientBrush> 
    </Expander.Background> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="Auto" /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 
     <DataGrid Height="250" Margin="5" Name="gridLiveProducts" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0"> 
     </DataGrid> 
     <GridSplitter Grid.Row="0" Grid.Column="1" Width="3" VerticalAlignment="Stretch" HorizontalAlignment="Center"> 
      <GridSplitter.Background> 
       <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> 
        <GradientStop Color="White" Offset="0" /> 
        <GradientStop Color="DarkGray" Offset="0.25" /> 
        <GradientStop Color="DarkGray" Offset="0.75" /> 
        <GradientStop Color="Gainsboro" Offset="1" /> <!-- Gainsboro matches the expander --> 
       </LinearGradientBrush> 
      </GridSplitter.Background> 
     </GridSplitter> 
     <Border Grid.Row="0" Grid.Column="2" Background="White" BorderBrush="Black" BorderThickness="1" Margin="5" > 
      <Image Height="250" HorizontalAlignment="Right" Name="imgShares" Stretch="Fill" VerticalAlignment="Top" Width="250"> 
      </Image> 
     </Border> 
     <GridSplitter Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Height="3" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="3"> 
      <GridSplitter.Background> 
       <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> 
        <GradientStop Color="Gainsboro" Offset="0" /> 
        <GradientStop Color="DarkGray" Offset="0.25" /> 
        <GradientStop Color="DarkGray" Offset="0.75" /> 
        <GradientStop Color="Gainsboro" Offset="1" /> 
       </LinearGradientBrush> 
      </GridSplitter.Background> 
     </GridSplitter> 
    </Grid> 
</Expander> 
+0

Em bắt được một giải pháp? – OsakaHQ

+0

Không tìm thấy giải pháp thực sự nào. Chúng tôi đã tái cấu trúc giao diện người dùng và điều này không còn cần thiết nữa. –

Trả lời

6

Bạn phải sử dụng Grid với GridSplitter.

Như thế này:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Expander Grid.Row="0" Background="Azure"></Expander> <!--this is you Expander--> 
    <GridSplitter Grid.Row="1" Height="10" Background="Red" ResizeDirection="Rows" HorizontalAlignment="Stretch"/> <!--this GridSplitter represents the glyph--> 
</Grid> 

để thành công theo cách này, hai bên kéo lưới điện phải Height = "*"

+2

Tôi đã thử nó và nó cho phép thay đổi kích thước của Expander, nhưng Expander không còn đáp ứng với biểu tượng mở rộng/sụp đổ. Tôi muốn người mở rộng sụp đổ như bình thường, nhưng cho phép người dùng kiểm soát kích thước mở rộng. –