2013-03-10 139 views
1

我有一个属于TabControl一部分的TabItem中的Stackpanel。随着事物被添加到StackPanel,我有一个自定义的垂直ScrollBar出现。目前它出现在TabItem控件的“栈顶”上面。我想将滚动条的位置全部移到TabControl之外。我试图用margin来做一些事情,但是当ScrollBar被推到TabControl的边缘之外时,它只会被剪切掉,并且没有任何数量的zindex搞乱了我的成功。任何帮助将是欣赏。 - 雷夫WPF滚动条位置

  <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

我们遇到了类似的问题。我们发现WPF在裁剪时不会画负边距的东西。当包含TabItem控件的其中一个元素设置了MinHeight,并且窗口缩小到MinHeight下方时,剪切就会发挥作用。默认情况下,滚动条对PART_VerticalScrollBar使用负边距。

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

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

http://snoopwpf.codeplex.com/