diff options
Diffstat (limited to 'Xamarin.Forms.Platform.UAP')
-rw-r--r-- | Xamarin.Forms.Platform.UAP/FormsProgressBarStyle.xaml | 308 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.UAP/Resources.xaml | 1 | ||||
-rw-r--r-- | Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj | 7 |
3 files changed, 316 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.UAP/FormsProgressBarStyle.xaml b/Xamarin.Forms.Platform.UAP/FormsProgressBarStyle.xaml new file mode 100644 index 00000000..1d2ea194 --- /dev/null +++ b/Xamarin.Forms.Platform.UAP/FormsProgressBarStyle.xaml @@ -0,0 +1,308 @@ +<ResourceDictionary + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:uwp="using:Xamarin.Forms.Platform.UWP"> + + <!-- Default style for Windows.UI.Xaml.Controls.ProgressBar --> + <Style x:Key="FormsProgressBarStyle" TargetType="uwp:FormsProgressBar"> + <Setter Property="Foreground" Value="{ThemeResource SystemControlHighlightAccentBrush}" /> + <Setter Property="Background" Value="{ThemeResource SystemControlBackgroundBaseLowBrush}" /> + <Setter Property="BorderThickness" Value="{ThemeResource ProgressBarBorderThemeThickness}" /> + <Setter Property="Maximum" Value="100" /> + <Setter Property="MinHeight" Value="{ThemeResource ProgressBarThemeMinHeight}" /> + <Setter Property="IsTabStop" Value="False" /> + <Setter Property="VerticalAlignment" Value="Center" /> + <Setter Property="Template"> + <Setter.Value> + <ControlTemplate TargetType="ProgressBar"> + <Grid> + <VisualStateManager.VisualStateGroups> + <VisualStateGroup x:Name="CommonStates"> + <VisualStateGroup.Transitions> + <VisualTransition From="Updating" To="Determinate"> + <Storyboard> + <RepositionThemeAnimation TargetName="ProgressBarIndicator" FromHorizontalOffset="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.IndicatorLengthDelta}" /> + </Storyboard> + </VisualTransition> + <VisualTransition From="Paused" To="Determinate"> + <Storyboard> + <DoubleAnimation Storyboard.TargetName="ProgressBarIndicator" + Storyboard.TargetProperty="Opacity" + To="1" + Duration="0:0:0.25" /> + </Storyboard> + </VisualTransition> + <VisualTransition From="Indeterminate" To="Determinate"> + <Storyboard> + <FadeInThemeAnimation TargetName="EllipseGrid" /> + </Storyboard> + </VisualTransition> + </VisualStateGroup.Transitions> + <VisualState x:Name="Determinate" /> + <VisualState x:Name="Updating" /> + <VisualState x:Name="Indeterminate"> + <Storyboard RepeatBehavior="Forever"> + <DoubleAnimation Storyboard.TargetName="EllipseGrid" + Duration="0:0:3.917" + Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" + From="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ContainerAnimationStartPosition}" + To="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.ContainerAnimationEndPosition}" /> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E1"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <SplineDoubleKeyFrame KeyTime="0:0:1" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" /> + <EasingDoubleKeyFrame KeyTime="0:0:2" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" /> + <SplineDoubleKeyFrame KeyTime="0:0:3" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E2"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="0" /> + <SplineDoubleKeyFrame KeyTime="0:0:1.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" /> + <SplineDoubleKeyFrame KeyTime="0:0:3.167" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E3"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="0" /> + <SplineDoubleKeyFrame KeyTime="0:0:1.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" /> + <SplineDoubleKeyFrame KeyTime="0:0:3.333" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E4"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" /> + <SplineDoubleKeyFrame KeyTime="0:0:1.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" /> + <SplineDoubleKeyFrame KeyTime="0:0:3.5" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="E5"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" /> + <SplineDoubleKeyFrame KeyTime="0:0:1.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" KeySpline="0.4,0,0.6,1" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationWellPosition}" /> + <SplineDoubleKeyFrame KeyTime="0:0:3.667" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseAnimationEndPosition}" KeySpline="0.4,0,0.6,1" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B1"> + <EasingDoubleKeyFrame KeyTime="0" Value="-50" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:3" Value="100" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B2"> + <EasingDoubleKeyFrame KeyTime="0" Value="-50" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.167" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="100" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B3"> + <EasingDoubleKeyFrame KeyTime="0" Value="-50" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.833" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.333" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="100" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B4"> + <EasingDoubleKeyFrame KeyTime="0" Value="-50" /> + <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="100" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="B5"> + <EasingDoubleKeyFrame KeyTime="0" Value="-50" /> + <EasingDoubleKeyFrame KeyTime="0:0:1.167" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:2.667" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="100" /> + </DoubleAnimationUsingKeyFrames> + <!-- The ElementOpacity on FormsProgressBar is used in place of Opacity so that the user may specify + a particular value they might wish to use, and also prevents unintended interactions between + Element.Opacity and Control.Opacity. --> + <DoubleAnimation Storyboard.TargetName="EllipseGrid" + Storyboard.TargetProperty="Opacity" + To="{Binding ElementOpacity, RelativeSource={RelativeSource TemplatedParent}}" + Duration="0" /> + <!-- Both FadeOutThemeAnimation and a DoubleAnimation on Opacity are necessary + here. The FadeOutThemeAnimation is necessary in the Indeterminate state so + that we can do a FadeInThemeAnimation when transitioning back to the + Determinate state. The DoubleAnimation on Opacity is necessary to hide the + DeterminateRoot immediately so that it does not slowly fade out during each + iteration of the Indeterminate state animation. --> + <FadeOutThemeAnimation TargetName="DeterminateRoot" /> + <DoubleAnimation Storyboard.TargetName="DeterminateRoot" + Storyboard.TargetProperty="Opacity" + To="0" + Duration="0" /> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E1"> + <EasingDoubleKeyFrame KeyTime="0" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3" Value="0" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E2"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.167" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.167" Value="0" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E3"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.333" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.333" Value="0" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E4"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.5" Value="0" /> + </DoubleAnimationUsingKeyFrames> + <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="E5"> + <EasingDoubleKeyFrame KeyTime="0" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="0" /> + <EasingDoubleKeyFrame KeyTime="0:0:0.667" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="1" /> + <EasingDoubleKeyFrame KeyTime="0:0:3.667" Value="0" /> + </DoubleAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Error"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ProgressBarIndicator"> + <DiscreteObjectKeyFrame KeyTime="0" Value="0" /> + </ObjectAnimationUsingKeyFrames> + </Storyboard> + </VisualState> + <VisualState x:Name="Paused"> + <Storyboard> + <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ProgressBarIndicator" + Storyboard.TargetProperty="Fill"> + <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlForegroundAccentBrush}" /> + </ObjectAnimationUsingKeyFrames> + <DoubleAnimation Storyboard.TargetName="ProgressBarIndicator" + Storyboard.TargetProperty="Opacity" + To="{ThemeResource ProgressBarIndicatorPauseOpacity}" + Duration="0:0:0.25" /> + </Storyboard> + </VisualState> + </VisualStateGroup> + </VisualStateManager.VisualStateGroups> + <Grid x:Name="EllipseGrid" + Opacity="0"> + <Grid.RenderTransform> + <TranslateTransform /> + </Grid.RenderTransform> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="Auto" /> + </Grid.ColumnDefinitions> + <Border x:Name="B1" + Grid.Column="8" + RenderTransformOrigin="0.5,0.5"> + <Border.RenderTransform> + <TranslateTransform /> + </Border.RenderTransform> + <Ellipse x:Name="E1" + Fill="{TemplateBinding Foreground}" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + RenderTransformOrigin="0.5,0.5"> + <Ellipse.RenderTransform> + <TranslateTransform /> + </Ellipse.RenderTransform> + </Ellipse> + </Border> + <Rectangle Grid.Column="7" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" /> + <Border x:Name="B2" + Grid.Column="6" + RenderTransformOrigin="0.5,0.5"> + <Border.RenderTransform> + <TranslateTransform /> + </Border.RenderTransform> + <Ellipse x:Name="E2" + Fill="{TemplateBinding Foreground}" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + RenderTransformOrigin="0.5,0.5"> + <Ellipse.RenderTransform> + <TranslateTransform /> + </Ellipse.RenderTransform> + </Ellipse> + </Border> + <Rectangle Grid.Column="5" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" /> + <Border x:Name="B3" + Grid.Column="4" + RenderTransformOrigin="0.5,0.5"> + <Border.RenderTransform> + <TranslateTransform /> + </Border.RenderTransform> + <Ellipse x:Name="E3" + Fill="{TemplateBinding Foreground}" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + RenderTransformOrigin="0.5,0.5"> + <Ellipse.RenderTransform> + <TranslateTransform /> + </Ellipse.RenderTransform> + </Ellipse> + </Border> + <Rectangle Grid.Column="3" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" /> + <Border x:Name="B4" + Grid.Column="2" + RenderTransformOrigin="0.5,0.5"> + <Border.RenderTransform> + <TranslateTransform /> + </Border.RenderTransform> + <Ellipse x:Name="E4" + Fill="{TemplateBinding Foreground}" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + RenderTransformOrigin="0.5,0.5"> + <Ellipse.RenderTransform> + <TranslateTransform /> + </Ellipse.RenderTransform> + </Ellipse> + </Border> + <Rectangle Grid.Column="1" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseOffset}" /> + <Border x:Name="B5" + Grid.Column="0" + RenderTransformOrigin="0.5,0.5"> + <Border.RenderTransform> + <TranslateTransform /> + </Border.RenderTransform> + <Ellipse x:Name="E5" + Fill="{TemplateBinding Foreground}" + Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + Height="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.EllipseDiameter}" + RenderTransformOrigin="0.5,0.5"> + <Ellipse.RenderTransform> + <TranslateTransform /> + </Ellipse.RenderTransform> + </Ellipse> + </Border> + </Grid> + <Border x:Name="DeterminateRoot" + Background="{TemplateBinding Background}" + BorderBrush="{TemplateBinding BorderBrush}" + BorderThickness="{TemplateBinding BorderThickness}"> + <Rectangle x:Name="ProgressBarIndicator" + Margin="{TemplateBinding Padding}" + Fill="{TemplateBinding Foreground}" + HorizontalAlignment="Left" /> + </Border> + </Grid> + </ControlTemplate> + </Setter.Value> + </Setter> + </Style> + +</ResourceDictionary> diff --git a/Xamarin.Forms.Platform.UAP/Resources.xaml b/Xamarin.Forms.Platform.UAP/Resources.xaml index 1ec6be7c..16500459 100644 --- a/Xamarin.Forms.Platform.UAP/Resources.xaml +++ b/Xamarin.Forms.Platform.UAP/Resources.xaml @@ -7,6 +7,7 @@ <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="FormsCommandBarStyle.xaml" /> <ResourceDictionary Source="PageControlStyle.xaml" /> + <ResourceDictionary Source="FormsProgressBarStyle.xaml" /> <ResourceDictionary Source="FormsTextBoxStyle.xaml" /> <ResourceDictionary Source="AutoSuggestStyle.xaml" /> <ResourceDictionary Source="MasterDetailControlStyle.xaml" /> diff --git a/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj b/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj index b1ae854a..fe6b1d1e 100644 --- a/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj +++ b/Xamarin.Forms.Platform.UAP/Xamarin.Forms.Platform.UAP.csproj @@ -134,6 +134,9 @@ <Compile Include="..\Xamarin.Forms.Platform.WinRT\BrushHelpers.cs"> <Link>BrushHelpers.cs</Link> </Compile> + <Compile Include="..\Xamarin.Forms.Platform.WinRT\FormsProgressBar.cs"> + <Link>FormsProgressBar.cs</Link> + </Compile> <Compile Include="..\Xamarin.Forms.Platform.WinRT\FormsTextBox.cs"> <Link>FormsTextBox.cs</Link> </Compile> @@ -442,6 +445,10 @@ <Generator>MSBuild:Compile</Generator> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Page> + <Page Include="FormsProgressBarStyle.xaml"> + <Generator>MSBuild:Compile</Generator> + <SubType>Designer</SubType> + </Page> <Page Include="FormsTextBoxStyle.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> |