2013-04-12 21 views
5

'daki Genişleticiyi yeniden boyutlandırmasına izin ver C# ve WinForms deneyimim çok fazla ama WPF'ye yeni başlayan bir kullanıcıyım. Aşağıya doğru genişleyen bir Expander'lı bir Pencerem var. Şu anda yazdığım soru kutusu gibi, kullanıcıların Expander'ı altta bir glifi tıklatarak (bu soru kutusu gibi) ve genişleticiyi istenen boyuta sürükleyerek dinamik olarak yeniden boyutlandırmasını istiyorum.Kullanıcıların WPF

Bunu yapmak için XAML (ve herhangi bir ek kod) sunabilir mi?

<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

bir çözüm aldın mı? – OsakaHQ

+0

Gerçek bir çözüm bulunamadı. Kullanıcı arayüzünü yeniden düzenledik ve bu artık gerekli değildi. –

cevap

6

Sen GridSplitter ile Grid kullanmak zorunda:

Bu defa ne var. Bunun gibi

:

bu şekilde başarıya amacıyla
<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> 

, çekme gird taraf olmalıdır Yükseklik = "*"

+2

Denedim ve Expander'ın yeniden boyutlandırılmasına izin veriyor, ancak Expander artık genişletme/daraltma simgesine yanıt vermiyor. Genişleticinin normal gibi çökmesini, ancak genişletilmiş boyutta kullanıcı denetimine izin vermesini isterim. –