PRISM在地区滚动

时间:2011-11-29 17:13:18

标签: wpf xaml prism

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

主窗口中的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>

2 个答案:

答案 0 :(得分:0)

您需要以某种方式限制TreeView的大小。默认情况下,它可能被允许伸展到它需要的任何大小,因此TreeView不认为它需要滚动所以不显示它的ScrollBars

您可以通过将Height的{​​{1}} / Width绑定到ContentControl的TreeView / Height来执行此操作。 (如果你的外部Width在ContentControl中,那么将绑定到它的高度/宽度)

ScrollViewer

答案 1 :(得分:0)

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

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

所以我可以在样式之外定义我的列,因为treeview没有.view属性

希望这有助于某人并感谢Rachel的努力