Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------------------
- | | | |
- | < | Content Here | > |
- | | | |
- ------------------------------------------------------
- <Canvas x:Name="root">
- <Button x:Name="left" Content="<"/>
- <Button x:Name="right" Content=">"/>
- <ScrollViewer x:Name="viewer" BorderThickness="0" VerticalScrollBarVisibility="Hidden">
- <ContentPresenter />
- </ScrollViewer>
- </Canvas>
- public override void OnApplyTemplate()
- {
- base.OnApplyTemplate();
- left = GetTemplateChild("left") as Button;
- left.Click += new RoutedEvent(YourHandler);
- right = GetTemplateChild("right") as Button;
- right.Click += new RoutedEvent(YourHandler);
- // position your scroll buttons here, not writing that code
- scroll = GetTemplateChild("viewer") as ScrollViewer;
- root = GetTemplateChild("root") as Canvas;
- var fe = this.Content as FrameworkElement;
- if (fe != null)
- {
- fe.SizeChanged += new SizeChangedEventHandler(fe_SizeChanged);
- }
- }
- void fe_SizeChanged(object sender, SizeChangedEventArgs e)
- {
- this.InvalidateMeasure();
- }
- protected override Size ArrangeOverride(Size finalSize)
- {
- if (!double.IsInfinity(scroll.ViewportHeight))
- {
- left.Visibility = (scroll.HorizontalOffset > 0);
- right.Visibility = (scroll.HorizontalOffset < ScrollableHeight);
- }
- return base.ArrangeOverride(finalSize);
- }
- protected override Size MeasureOverride(Size availableSize)
- {
- scroll.Measure(availableSize);
- return scroll.DesiredSize;
- }
- <ControlTemplate TargetType="{x:Type ScrollViewer}" x:Key="ButtonOnlyScrollViewer">
- <ControlTemplate.Resources>
- <!-- Add style here for repeat button seen below -->
- </ControlTemplate.Resources>
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <RepeatButton Grid.Row="0"
- Foreground="White"
- Background="Yellow"
- HorizontalAlignment="Stretch"
- Command="ScrollBar.PageUpCommand"
- Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}">
- </RepeatButton>
- <ScrollContentPresenter
- CanContentScroll="{TemplateBinding CanContentScroll}"
- Grid.Row="1"
- Content="{TemplateBinding Content}"
- Width="{TemplateBinding Width}"
- Height="{TemplateBinding Height}"
- Margin="{TemplateBinding Margin}"/>
- <RepeatButton Grid.Row="2" Background="Black" Foreground="White" Command="ScrollBar.PageDownCommand">
- </RepeatButton>
- </Grid>
- </ControlTemplate>
Add Comment
Please, Sign In to add comment