2011-02-16 26 views
0

我有一個WPF GridSplitter,應用了一個控件模板來添加夾點和按鈕。高度設置爲20px。當我拖動拆分器來調整我的網格時,預覽也是20px。我想在拖動時更改預覽的高度。更改GridSplitter預覽的高度

有沒有簡單的方法來實現這個目標?

<Style TargetType="{x:Type GridSplitter}" x:Key="AdvancedGridSplitter"> 
    <Setter Property="Background" Value="{DynamicResource {x:Static themes:PropertyGridCommonDictionary.SummarySplitterBackgroundBrushKey}}" /> 
    <Setter Property="BorderBrush" Value="{DynamicResource {x:Static themes:DockingCommonDictionary.DocumentTabBorderNormalBrushKey}}" /> 
    <Setter Property="BorderThickness" Value="0,1" /> 
    <Setter Property="Height" Value="20" /> 
    <Setter Property="HorizontalAlignment" Value="Stretch" /> 
    <Setter Property="ResizeBehavior" Value="PreviousAndNext" /> 
    <Setter Property="VerticalAlignment" Value="Center" /> 
    <Setter Property="UIElement.SnapsToDevicePixels" Value="True" /> 
    <Setter Property="UIElement.Focusable" Value="False" /> 
    <Setter Property="ShowsPreview" Value="True" /> 
    <Setter Property="Control.Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Border x:Name="Root" BorderThickness="{TemplateBinding Border.BorderThickness}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}">       
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto" /> 
          <ColumnDefinition Width="*" /> 
          <ColumnDefinition Width="Auto" /> 
          <ColumnDefinition Width="*" /> 
          <ColumnDefinition Width="Auto" /> 
         </Grid.ColumnDefinitions> 

         <StackPanel Grid.Column="0" HorizontalAlignment="Center" Margin="2,0,0,0" Orientation="Horizontal" VerticalAlignment="Center"> 
          <ribbon:Button Context="StatusBarItem" Cursor="Arrow" ImageSourceSmall="/Resources/Splitter/SplitterSwitch.png" ImageSourceSmallSize="11,11" Padding="2,0" /> 
         </StackPanel> 

         <Grid Grid.Column="1" /> 

         <StackPanel Grid.Column="2" HorizontalAlignment="Center" Orientation="Vertical" VerticalAlignment="Center" x:Name="Grip"> 
          <Rectangle Fill="{DynamicResource {x:Static themes:PropertyGridCommonDictionary.BorderBrushKey}}" Height="1" Margin="1" Width="50"> 
           <Rectangle.Effect> 
            <DropShadowEffect BlurRadius="1" Color="White" Direction="90" Opacity=".8" ShadowDepth="1" /> 
           </Rectangle.Effect> 
          </Rectangle> 
          <Rectangle Fill="{DynamicResource {x:Static themes:PropertyGridCommonDictionary.BorderBrushKey}}" Height="1" Margin="1" Width="50"> 
           <Rectangle.Effect> 
            <DropShadowEffect BlurRadius="1" Color="White" Direction="90" Opacity=".8" ShadowDepth="1" /> 
           </Rectangle.Effect> 
          </Rectangle> 
         </StackPanel> 

         <Grid Grid.Column="3" /> 

         <StackPanel Grid.Column="4" HorizontalAlignment="Center" Margin="0,0,2,0" Orientation="Horizontal" VerticalAlignment="Center"> 
          <ribbon:Button Context="StatusBarItem" Cursor="Arrow" ImageSourceSmall="/Resources/Splitter/SplitterVertical.png" ImageSourceSmallSize="11,11" Padding="2,0" /> 
          <ribbon:Button Context="StatusBarItem" Cursor="Arrow" ImageSourceSmall="/Resources/Splitter/SplitterHorizontal.png" ImageSourceSmallSize="11,11" IsChecked="True" Padding="2,0" /> 
          <ribbon:Button Context="StatusBarItem" Cursor="Arrow" ImageSourceSmall="/Resources/Splitter/SplitterMinimize.png" ImageSourceSmallSize="11,11" Padding="2,0" /> 
         </StackPanel> 
        </Grid> 
       </Border> 

       <ControlTemplate.Triggers> 
        <Trigger Property="VerticalAlignment" Value="Stretch"> 
         <Setter TargetName="Grip" Property="Orientation" Value="Vertical"/> 
         <Setter TargetName="Grip" Property="Visibility" Value="Visible"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

這個問題並沒有以明確的方式提出。請說明你真正想要的是什麼。 – silverkid 2011-02-16 20:41:23

回答

3

您需要設置PreviewStyle您GridSplitter:

PreviewStyle="{StaticResource AdvancedGridSplitterPreview}" 

合適的風格可能是:

<Style TargetType="{x:Type Control}" x:Key="AdvancedGridSplitterPreview"> 
    <Setter Property="Height" Value="4"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <Grid> 
        <Rectangle> 
         <Rectangle.Fill> 
          <SolidColorBrush Opacity="0.4" Color="Black"/> 
         </Rectangle.Fill> 
        </Rectangle> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

與另一個例子說明,請參見here in the MSDN

希望這會有所幫助。

+0

現貨!感謝您的幫助。 – RXB 2011-02-16 21:27:27