2011-11-29 84 views
0

我使用棱镜区域。在主窗口中,我已经定义了区域,并在区域LeftNavigationRegion中注入了一个基本上由树视图组成的模块。当主区域调整大小时,我想从树形视图中选择一个滚动条,但是我从内容控件中获取滚动条。这意味着树视图中的标题控件消失。有谁知道如何显示在主窗口中的树形PRISM滚动区域

XAML的滚动条...

<ContentControl x:Name="ActionContent" 
       cal:RegionManager.RegionName="{x:Static inf:RegionNames.LeftNavigationRegion}" 
       VerticalAlignment="Stretch"> 
    <ContentControl.Template> 
     <ControlTemplate TargetType="ContentControl"> 
      <ContentPresenter Content="{TemplateBinding Content}" /> 
      <ControlTemplate.Triggers> 
       <Trigger Property="HasContent" Value="false"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </ContentControl.Template> 
</ContentControl> 

回答

0

想我解决了这个问题,这个问题是关系到我如何renderede树视图的列,我使用的是静态网格在treeview的样式模板中。当我意识到如果我改变我的自定义树视图到标准列表视图滚动工作。所以我提取了标准列表视图的样式,并对树视图样式进行了一些更改,并且它可以工作,现在树视图的标题保持顶部,并显示树视图的滚动条而不是内容控件的滚动条

<Style TargetType="{x:Type TreeView}"..... 

添加

   <Border BorderThickness="{TemplateBinding Border.BorderThickness}" BorderBrush="{TemplateBinding Border.BorderBrush}" Name="Bd" SnapsToDevicePixels="True"> 

        <ScrollViewer Style="{DynamicResource 
       {x:Static GridView.GridViewScrollViewerStyleKey}}"> 
         <ItemsPresenter /> 
        </ScrollViewer> 

       </Border> 

的控制模板。而在

<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="ScrollViewer"> 

我加

<ScrollViewer DockPanel.Dock="Top" 
          HorizontalScrollBarVisibility="Hidden" 
          VerticalScrollBarVisibility="Hidden" 
          Focusable="false"> 
            <GridViewHeaderRowPresenter Name="hrp" Columns="{StaticResource gvcc}" 
           ColumnHeaderContainerStyle= 
           "{StaticResource MyHeaderStyle}" /> 
           </ScrollViewer> 

这样我就可以从外面的风格定义我的列树状没有.view财产

希望这可以帮助别人,并感谢瑞秋努力为您

0

您需要限制TreeView的大小以某种方式。默认情况下,它可能被允许延伸到它需要什么尺寸,所以TreeView不认为它曾经需要滚动页面不显示它的滚动条

您可以通过绑定的Height/Width做到这一点TreeView添加到您的ContentControl的Height/Width。 (如果你的外ScrollViewer是ContentControl中里,然后绑定到它的高度/宽度代替)

<TreeView Height="{Binding ElementName=ActionContent, Path=ActualHeight}" 
      Width="{Binding ElementName=ActionContent, Path=ActualWidth}"> 
+0

抱歉不起作用。注入模块工作正常,如果我只是把它添加到窗口,当我注入PRISM的区域我得到的contentcontrols滚动条,而不是treeview。如果我禁用滚动条,我从来没有得到TreeView滚动条。我已经删除了一切必须与堆叠面板,可以搞乱滚动 – klashagelqvist

+0

@ user1071785你可以发布完整的XAML标记(简化)?特别是ScrollViewer,TreeView和Panel/Item,它们实际上在区域中注入。 – Rachel