none
Scrol произвольном месте WPF RRS feed

  • Вопрос

  • Здравствуйте. Можно ли обернуть что то в scrollviewer (например DockPanel) а сам скрол расположить не радом с тем что обернул а в произвольном месте или как то привязать этот scrollviewer к scrollbar? 
    26 апреля 2011 г. 2:55

Ответы

  • Кстати, при желании вы можете сделать шаблон для ScrollViewer-а, в котором ScrollBar будет позиционироваться куда-либо. Все зависит от того насколько вам нужно отделить ScrollViewer от ScrollBar-а. Если зайдете в описание ScrollViewer, то увидите такую вещь как TemplatePartAttribute, в одном из которых прописано

    Name="PART_HorizontalScrollBar"

    Это означает, что вам нужно написать свой шаблон для ScrollViewer-а, со ScrollBar-ом. Чтобы он работал как нужно, ему достаточно прописать это имя. Но прописывать это все нужно внутри Template-а. Так же, вы можете внутрь шаблона вписать и Grid.

    Странный у вас шаблон. horizontal_scrol на самом деле - вертикальный скролл? Мне кажется вы что-то намудрили лишнего...


    • Помечено в качестве ответа firefox0013 28 апреля 2011 г. 9:40
    27 апреля 2011 г. 9:49
    Отвечающий

Все ответы

  • Вы можете управлять ScrollViewer-ом через ScrollToVerticalOffset. Байндинг просто так прописать не получится, но можно написать свой медиатор, который будет скроллировать до нужного места в зависимости от выставленных значений.
    26 апреля 2011 г. 11:26
    Отвечающий
  • А как задать ScrollBar минимальное и максимальное значение и сделать так чтобы он исчезал когда исчезает ScrollViewer

    Код такой

     

    <ControlTemplate TargetType="{x:Type l:mycontrol}"> 
    <
    Border BorderBrush="{TemplateBinding BorderBrush}" Background="White" BorderThickness="{TemplateBinding BorderThickness}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <ScrollViewer Grid.Column="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" DockPanel.Dock="Top"> <DockPanel> <GridViewHeaderRowPresenter Columns="{Binding Path=Columns,RelativeSource={RelativeSource TemplatedParent}}" DockPanel.Dock="Top" /> <ScrollViewer Name="horizontal_scrol" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" > <DockPanel> <ItemsPresenter/> </DockPanel> </ScrollViewer> </DockPanel> </ScrollViewer> <ScrollBar Grid.Column="1"></ScrollBar> </Grid> </Border>
    </ControlTemplate>

      Мне нужно привязять  horizontal_scrol к ScrollBar.    

     


    27 апреля 2011 г. 3:27
  • По сути нужно вынести каким то образом полосу прокрутки horizontal_scrol из вертикального скролвювера чтобы она не перемещалась при горизонтальной прокрутке. 
    27 апреля 2011 г. 4:16
  • Кстати, при желании вы можете сделать шаблон для ScrollViewer-а, в котором ScrollBar будет позиционироваться куда-либо. Все зависит от того насколько вам нужно отделить ScrollViewer от ScrollBar-а. Если зайдете в описание ScrollViewer, то увидите такую вещь как TemplatePartAttribute, в одном из которых прописано

    Name="PART_HorizontalScrollBar"

    Это означает, что вам нужно написать свой шаблон для ScrollViewer-а, со ScrollBar-ом. Чтобы он работал как нужно, ему достаточно прописать это имя. Но прописывать это все нужно внутри Template-а. Так же, вы можете внутрь шаблона вписать и Grid.

    Странный у вас шаблон. horizontal_scrol на самом деле - вертикальный скролл? Мне кажется вы что-то намудрили лишнего...


    • Помечено в качестве ответа firefox0013 28 апреля 2011 г. 9:40
    27 апреля 2011 г. 9:49
    Отвечающий
  • Уважаемый пользователь, пожалуйста, не забывайте отмечать (с помощью кнопки 'Пометить как ответ') ответ, решающий проблему или ответ, помогший в решении проблемы. Спасибо.
    Для связи [mail]
    28 апреля 2011 г. 5:00