我在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>
答案 0 :(得分:0)
我们遇到了类似的问题。我们发现,当剪切它们时,WPF不会绘制具有负边距的东西。当包含TabItem控件的其中一个元素设置为MinHeight时,剪辑开始发挥作用,窗口缩小到MinHeight以下。默认情况下,滚动条使用PART_VerticalScrollBar的负边距。
解决方案是确保您没有在可能包含TabItem的任何容器上设置MinHeight。如果您需要使用MinHeight,请在顶级视图中进行设置。
Snoop工具对调试WPF布局问题非常有帮助。