开发者

Change height of GridSplitter preview

开发者 https://www.devze.com 2023-02-11 17:43 出处:网络
I have a WPF GridSplitter with a controltemplate being applied to add grips and buttons. The height is set to 20px. When I drag the splitter to resize my grid the preview is also 20px. I\'d like to ch

I have a WPF GridSplitter with a controltemplate being applied to add grips and buttons. The height is set to 20px. When I drag the splitter to resize my grid the preview is also 20px. I'd like to change the height of the preview while it's being dragged.

Is there a simple way to accomplish this?

<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>
            <ControlTempla开发者_StackOverflow社区te>
                <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>


You need to set the PreviewStyle on your GridSplitter:

PreviewStyle="{StaticResource AdvancedGridSplitterPreview}"

An appropriate style could be:

<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>

See here in the MSDN for another description with example.

Hope this helps.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号