Изменить высоту предварительного просмотра GridSplitter

У меня есть WPF GridSplitter с шаблоном управления, применяемым для добавления ручек и кнопок. Высота установлена ​​на 20px. Когда я перетаскиваю разделитель, чтобы изменить размер сетки, предварительный просмотр также составляет 20 пикселей. Я хотел бы изменить высоту предварительного просмотра во время его перетаскивания.

Есть ли простой способ сделать это?

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

person RXB    schedule 16.02.2011    source источник
comment
вопрос поставлен не ясно. Уточните, пожалуйста, чего вы на самом деле хотите.   -  person silverkid    schedule 16.02.2011


Ответы (1)


Вам нужно установить 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>

См. здесь в MSDN для другого описание с примером.

Надеюсь это поможет.

person mancaus    schedule 16.02.2011
comment
Точно! Спасибо за помощь. - person RXB; 17.02.2011