ПРИЗМА Прокрутка в регионе - PullRequest
0 голосов
/ 29 ноября 2011

Я использую регионы с Призмой. В главном окне я определил регионы, а в регионе 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 голосов
/ 01 декабря 2011

Думаю, я решил это, проблема была связана с тем, как я отредактировал столбцы древовидной структуры, я использовал статическую сетку внутри шаблона стиля древовидной структуры.Когда я понял, что если я изменил свой пользовательский вид дерева на стандартный вид списка, прокрутка сработала.Итак, я извлек стили для стандартного списка и внес некоторые изменения в стиль древовидной структуры, и это сработало, теперь заголовок древовидной структуры остается сверху, а полоса прокрутки для древовидной структуры отображается вместо полосы прокрутки для элемента управления содержимым

В

<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 голосов
/ 30 ноября 2011

Вам нужно каким-то образом ограничить размер TreeView.По умолчанию ему, вероятно, разрешено растягиваться до нужного размера, поэтому TreeView не думает, что ему когда-либо понадобится прокрутка, поэтому не показывайте его ScrollBars

. Вы можете сделать это, связавHeight / Width из TreeView для вашего ContentControl's Height / Width.(Если ваш внешний ScrollViewer находится внутри ContentControl, вместо этого свяжите его с его Высота / Ширина)

<TreeView Height="{Binding ElementName=ActionContent, Path=ActualHeight}"
          Width="{Binding ElementName=ActionContent, Path=ActualWidth}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...