WPF滚动条位置

时间:2013-03-10 13:24:40

标签: wpf location scrollbar stackpanel

我在TabItem中有一个StackPanel,它是TabControl的一部分。当事情被添加到StackPanel时,我会出现一个自定义的垂直ScrollBar。目前它出现在TabItem控件“堆栈面板之上”。我想将滚动条的位置移动到TabControl外部。我试图用保证金来做一些事情,但是当ScrollBar被推到TabControl的边缘之外时,它只会被修剪掉,而且没有任何与zindex混淆的事情会导致任何成功。任何帮助都会很有意义。 - 莱夫

            <TabItem Name="tabItem1" Background="{x:Null}" BorderBrush="#FF48D6EE" IsSelected="True">
                <TabItem.Template>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Grid>
                            <Border Name="Tab1" Margin="0,0,0,0" BorderBrush="#FF002648" BorderThickness="1,0,1,1" CornerRadius="0,0,3,3">
                                <Border.Effect>
                                    <DropShadowEffect ShadowDepth="0" Color="#FF3Ed3F4" Opacity=".5" BlurRadius="2"/>
                                </Border.Effect>
                            </Border>
                            <HeaderedContentControl Name="TabHeaderText" 
                                                TextBlock.FontFamily="Aharoni" 
                                                TextBlock.FontWeight="Bold" 
                                                TextBlock.Foreground="#FF214c6d" 
                                                TextBlock.FontSize="18" 
                                                Header="Tab1" 
                                                Margin="10,1,10,0" 
                                                VerticalAlignment="Center" 
                                                HorizontalAlignment="Center"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="Tab1" Property="Background">
                                    <Setter.Value>
                                        <LinearGradientBrush StartPoint=".5,0" EndPoint=".5,1">
                                            <GradientStop Color="#FF000a13" Offset="0" />
                                            <GradientStop Color="#FF06335c" Offset="0.5" />
                                            <GradientStop Color="#FF33bbdb" Offset="1" />
                                        </LinearGradientBrush>
                                    </Setter.Value>
                                </Setter>
                                <Setter TargetName="Tab1" Property="Effect">
                                    <Setter.Value>
                                        <DropShadowEffect ShadowDepth="0" Color="#FF3ccbee" Opacity="1" BlurRadius="5"/>
                                    </Setter.Value>
                                </Setter>
                                <Setter TargetName="Tab1" Property="BorderBrush" Value="#FF48d6ed"/>
                                <Setter TargetName="Tab1" Property="BorderThickness" Value="1,0,1,1" />
                                <Setter TargetName="Tab1" Property="Header">
                                    <Setter.Value>
                                        <custom:OutlinedText FontSize="18" 
                                                            FontFamily="Aharoni" 
                                                            FontWeight="ExtraBold" 
                                                            Fill="Black" 
                                                            Stroke="#ff3bb1db" 
                                                            StrokeThickness=".75" 
                                                            Text="Tab1"/>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </TabItem.Template>
                <ScrollViewer HorizontalScrollBarVisibility="Disabled" 
                        VerticalScrollBarVisibility="Auto"
                        Template="{StaticResource ScrollViewerControlTemplate}">
                    <StackPanel Name="panelTab1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                </ScrollViewer>
            </TabItem>

1 个答案:

答案 0 :(得分:0)

我们遇到了类似的问题。我们发现,当剪切它们时,WPF不会绘制具有负边距的东西。当包含TabItem控件的其中一个元素设置为MinHeight时,剪辑开始发挥作用,窗口缩小到MinHeight以下。默认情况下,滚动条使用PART_VerticalScrollBar的负边距。

解决方案是确保您没有在可能包含TabItem的任何容器上设置MinHeight。如果您需要使用MinHeight,请在顶级视图中进行设置。

Snoop工具对调试WPF布局问题非常有帮助。

http://snoopwpf.codeplex.com/