private void InitializeComponent() { Func<object, IEnumerable<Control>> pt = PropertyTemplate; Content = new ScrollViewer { Content = new Grid { ColumnDefinitions = new ColumnDefinitions { new ColumnDefinition(GridLength.Auto), new ColumnDefinition(GridLength.Auto), new ColumnDefinition(GridLength.Auto), }, Styles = new Styles { new Style(x => x.Is<Control>()) { Setters = new[] { new Setter(MarginProperty, new Thickness(2)), } }, }, [GridRepeater.TemplateProperty] = pt, [!GridRepeater.ItemsProperty] = this.WhenAnyValue(x => x.ViewModel.Properties), } }; }
public void Offset_Should_Be_Coerced_To_Viewport() { var target = new ScrollViewer(); target.SetValue(ScrollViewer.ExtentProperty, new Size(20, 20)); target.SetValue(ScrollViewer.ViewportProperty, new Size(10, 10)); target.Offset = new Vector(12, 12); Assert.Equal(new Vector(10, 10), target.Offset); }
public void Content_Is_Created() { var target = new ScrollViewer { Template = new FuncControlTemplate<ScrollViewer>(CreateTemplate), Content = "Foo", }; target.ApplyTemplate(); Assert.IsType<TextBlock>(target.Presenter.Child); }
public void Content_Is_Created() { var target = new ScrollViewer { Template = ControlTemplate.Create<ScrollViewer>(this.CreateTemplate), Content = "Foo", }; target.ApplyTemplate(); var presenter = target.GetTemplateChild<ScrollContentPresenter>("contentPresenter"); Assert.IsType<TextBlock>(presenter.Child); }
/// <summary> /// The default template for the <see cref="ScrollViewer"/> control. /// </summary> /// <param name="control">The control being styled.</param> /// <returns>The root of the instantiated template.</returns> public static Control Template(ScrollViewer control) { var result = new Grid { ColumnDefinitions = new ColumnDefinitions { new ColumnDefinition(1, GridUnitType.Star), new ColumnDefinition(GridLength.Auto), }, RowDefinitions = new RowDefinitions { new RowDefinition(1, GridUnitType.Star), new RowDefinition(GridLength.Auto), }, Children = new Controls { new ScrollContentPresenter { Name = "contentPresenter", [~ScrollContentPresenter.ContentProperty] = control[~ScrollViewer.ContentProperty], [~~ScrollContentPresenter.ExtentProperty] = control[~~ScrollViewer.ExtentProperty], [~~ScrollContentPresenter.OffsetProperty] = control[~~ScrollViewer.OffsetProperty], [~~ScrollContentPresenter.ViewportProperty] = control[~~ScrollViewer.ViewportProperty], [~ScrollContentPresenter.CanScrollHorizontallyProperty] = control[~ScrollViewer.CanScrollHorizontallyProperty], }, new ScrollBar { Name = "horizontalScrollBar", Orientation = Orientation.Horizontal, [~ScrollBar.MaximumProperty] = control[~ScrollViewer.HorizontalScrollBarMaximumProperty], [~~ScrollBar.ValueProperty] = control[~~ScrollViewer.HorizontalScrollBarValueProperty], [~ScrollBar.ViewportSizeProperty] = control[~ScrollViewer.HorizontalScrollBarViewportSizeProperty], [~ScrollBar.VisibilityProperty] = control[~ScrollViewer.HorizontalScrollBarVisibilityProperty], [Grid.RowProperty] = 1, }, new ScrollBar { Name = "verticalScrollBar", Orientation = Orientation.Vertical, [~ScrollBar.MaximumProperty] = control[~ScrollViewer.VerticalScrollBarMaximumProperty], [~~ScrollBar.ValueProperty] = control[~~ScrollViewer.VerticalScrollBarValueProperty], [~ScrollBar.ViewportSizeProperty] = control[~ScrollViewer.VerticalScrollBarViewportSizeProperty], [~ScrollBar.VisibilityProperty] = control[~ScrollViewer.VerticalScrollBarVisibilityProperty], [Grid.ColumnProperty] = 1, }, }, }; return result; }
private Control CreateTemplate(ScrollViewer control) { return new Grid { ColumnDefinitions = new ColumnDefinitions { new ColumnDefinition(1, GridUnitType.Star), new ColumnDefinition(GridLength.Auto), }, RowDefinitions = new RowDefinitions { new RowDefinition(1, GridUnitType.Star), new RowDefinition(GridLength.Auto), }, Children = new Controls { new ScrollContentPresenter { Name = "PART_ContentPresenter", [~ContentPresenter.ContentProperty] = control[~ContentControl.ContentProperty], [~~ScrollContentPresenter.ExtentProperty] = control[~~ScrollViewer.ExtentProperty], [~~ScrollContentPresenter.OffsetProperty] = control[~~ScrollViewer.OffsetProperty], [~~ScrollContentPresenter.ViewportProperty] = control[~~ScrollViewer.ViewportProperty], [~ScrollContentPresenter.CanScrollHorizontallyProperty] = control[~ScrollViewer.CanScrollHorizontallyProperty], }, new ScrollBar { Name = "horizontalScrollBar", Orientation = Orientation.Horizontal, [~RangeBase.MaximumProperty] = control[~ScrollViewer.HorizontalScrollBarMaximumProperty], [~~RangeBase.ValueProperty] = control[~~ScrollViewer.HorizontalScrollBarValueProperty], [~ScrollBar.ViewportSizeProperty] = control[~ScrollViewer.HorizontalScrollBarViewportSizeProperty], [~ScrollBar.VisibilityProperty] = control[~ScrollViewer.HorizontalScrollBarVisibilityProperty], [Grid.RowProperty] = 1, }, new ScrollBar { Name = "verticalScrollBar", Orientation = Orientation.Vertical, [~RangeBase.MaximumProperty] = control[~ScrollViewer.VerticalScrollBarMaximumProperty], [~~RangeBase.ValueProperty] = control[~~ScrollViewer.VerticalScrollBarValueProperty], [~ScrollBar.ViewportSizeProperty] = control[~ScrollViewer.VerticalScrollBarViewportSizeProperty], [~ScrollBar.VisibilityProperty] = control[~ScrollViewer.VerticalScrollBarVisibilityProperty], [Grid.ColumnProperty] = 1, }, }, }; }
public void Test_ScrollViewer_With_TextBlock() { using (var context = PerspexLocator.EnterScope()) { RegisterServices(); ScrollViewer scrollViewer; TextBlock textBlock; var window = new Window() { Width = 800, Height = 600, SizeToContent = SizeToContent.WidthAndHeight, Content = scrollViewer = new ScrollViewer { Width = 200, Height = 200, CanScrollHorizontally = true, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, Content = textBlock = new TextBlock { Width = 400, Height = 400, Text = "Hello World!", }, } }; window.LayoutManager.ExecuteLayoutPass(); Assert.Equal(new Size(800, 600), window.Bounds.Size); Assert.Equal(new Size(200, 200), scrollViewer.Bounds.Size); Assert.Equal(new Point(300, 200), Position(scrollViewer)); Assert.Equal(new Size(400, 400), textBlock.Bounds.Size); var scrollBars = scrollViewer.GetTemplateChildren().OfType<ScrollBar>().ToList(); var presenters = scrollViewer.GetTemplateChildren().OfType<ScrollContentPresenter>().ToList(); Assert.Equal(2, scrollBars.Count); Assert.Equal(1, presenters.Count); var presenter = presenters[0]; Assert.Equal(new Size(190, 190), presenter.Bounds.Size); var horzScroll = scrollBars.Single(x => x.Orientation == Orientation.Horizontal); var vertScroll = scrollBars.Single(x => x.Orientation == Orientation.Vertical); Assert.True(horzScroll.IsVisible); Assert.True(vertScroll.IsVisible); Assert.Equal(new Size(190, 10), horzScroll.Bounds.Size); Assert.Equal(new Size(10, 190), vertScroll.Bounds.Size); Assert.Equal(new Point(0, 190), Position(horzScroll)); Assert.Equal(new Point(190, 0), Position(vertScroll)); } }