Browse Source

Added ScrollViewer XAML style.

ScrollBar not yet working.
Steven Kirk 10 years ago
parent
commit
187d14c018

+ 23 - 0
samples/XamlTestApplicationPcl/ScrollBar.paml

@@ -0,0 +1,23 @@
+<Styles xmlns="https://github.com/perspex">
+  <Style Selector="ScrollBar">
+    <Setter Property="Template">
+      <ControlTemplate>
+        <Border Background="Silver">
+          <Track Minimum="{TemplateBinding Minimum}"
+                 Maximum="{TemplateBinding Maximum}"
+                 Value="{TemplateBinding Path=Value, Mode=TwoWay}"
+                 ViewportSize="{TemplateBinding ViewportSize}"
+                 Orientation="{TemplateBinding Orientation}">
+            <Thumb Width="10" Height="10">
+              <Thumb.Template>
+                <ControlTemplate>
+                  <Border Background="Gray"/>
+                </ControlTemplate>
+              </Thumb.Template>
+            </Thumb>
+          </Track>
+        </Border>
+      </ControlTemplate>
+    </Setter>
+  </Style>
+</Styles>

+ 27 - 0
samples/XamlTestApplicationPcl/ScrollViewer.paml

@@ -0,0 +1,27 @@
+<Style xmlns="https://github.com/perspex" Selector="ScrollViewer">
+  <Setter Property="Template">
+    <ControlTemplate>
+      <Grid ColumnDefinitions="*,Auto" RowDefinitions="*,Auto">
+        <ScrollContentPresenter Content="{TemplateBinding Content}"
+                                Extent="{TemplateBinding Path=Extent, Mode=TwoWay}"
+                                Offset="{TemplateBinding Path=Offset, Mode=TwoWay}"
+                                Viewport="{TemplateBinding Path=Viewport, Mode=TwoWay}"
+                                CanScrollHorizontally="{TemplateBinding CanScrollHorizontally}"/>
+        <ScrollBar Name="horizontalScrollBar"
+                   Orientation="Horizontal"
+                   Maximum="{TemplateBinding HorizontalScrollBarMaximum}"
+                   Value="{TemplateBinding Path=HorizontalScrollBarValue, Mode=TwoWay}"
+                   ViewportSize="{TemplateBinding HorizontalScrollBarViewportSize}"
+                   Visibility="{TemplateBinding HorizontalScrollBarVisibility}"
+                   Grid.Row="1"/>
+        <ScrollBar Name="verticalScrollBar"
+                   Orientation="Vertical"
+                   Maximum="{TemplateBinding VerticalScrollBarMaximum}"
+                   Value="{TemplateBinding Path=VerticalScrollBarValue, Mode=TwoWay}"
+                   ViewportSize="{TemplateBinding VerticalScrollBarViewportSize}"
+                   Visibility="{TemplateBinding VerticalScrollBarVisibility}"
+                   Grid.Column="1"/>
+      </Grid>
+    </ControlTemplate>
+  </Setter>
+</Style>

+ 2 - 0
samples/XamlTestApplicationPcl/XamlTestApp.paml

@@ -5,6 +5,8 @@
     <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.Button.paml"/>
     <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.Carousel.paml"/>
     <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.CheckBox.paml"/>
+    <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.ScrollBar.paml"/>
+    <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.ScrollViewer.paml"/>
     <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.TabControl.paml"/>
     <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.TabItem.paml"/>
     <StyleInclude Source="resource://application/XamlTestApplicationPcl/XamlTestApplication.TabStrip.paml"/>

+ 6 - 0
samples/XamlTestApplicationPcl/XamlTestApplicationPcl.csproj

@@ -135,6 +135,12 @@
     <EmbeddedResource Include="TabStrip.paml">
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="ScrollViewer.paml">
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="ScrollBar.paml">
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <None Include="packages.config" />
     <EmbeddedResource Include="Button.paml">
       <SubType>Designer</SubType>

+ 2 - 0
src/Perspex.Controls/Primitives/Track.cs

@@ -4,6 +4,7 @@
 using System;
 using Perspex.Input;
 using Perspex.Interactivity;
+using Perspex.Metadata;
 
 namespace Perspex.Controls.Primitives
 {
@@ -84,6 +85,7 @@ namespace Perspex.Controls.Primitives
             set { SetValue(OrientationProperty, value); }
         }
 
+        [Content]
         public Thumb Thumb
         {
             get { return GetValue(ThumbProperty); }