4 changed files with 185 additions and 29 deletions
@ -0,0 +1,142 @@ |
|||||
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
xmlns:sys="clr-namespace:System;assembly=mscorlib" |
||||
|
xmlns:local="clr-namespace:Microsoft.Windows.Controls"> |
||||
|
|
||||
|
<!-- =============================================================================== --> |
||||
|
<!-- BusyIndicator --> |
||||
|
<!-- =============================================================================== --> |
||||
|
<Style TargetType="{x:Type local:BusyIndicator}"> |
||||
|
<Setter Property="BusyContent" Value="Please wait..."/> |
||||
|
<Setter Property="IsTabStop" Value="False"/> |
||||
|
<Setter Property="OverlayStyle"> |
||||
|
<Setter.Value> |
||||
|
<Style TargetType="Rectangle"> |
||||
|
<Setter Property="Fill" Value="White"/> |
||||
|
<Setter Property="Opacity" Value="0.5"/> |
||||
|
</Style> |
||||
|
</Setter.Value> |
||||
|
</Setter> |
||||
|
<Setter Property="ProgressBarStyle"> |
||||
|
<Setter.Value> |
||||
|
<Style TargetType="ProgressBar"> |
||||
|
<Setter Property="IsIndeterminate" Value="True"/> |
||||
|
<Setter Property="Height" Value="15"/> |
||||
|
<Setter Property="Margin" Value="8,0,8,8"/> |
||||
|
</Style> |
||||
|
</Setter.Value> |
||||
|
</Setter> |
||||
|
<Setter Property="DisplayAfter" Value="00:00:00.1"/> |
||||
|
<Setter Property="HorizontalAlignment" Value="Stretch"/> |
||||
|
<Setter Property="VerticalAlignment" Value="Stretch"/> |
||||
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/> |
||||
|
<Setter Property="VerticalContentAlignment" Value="Stretch"/> |
||||
|
<Setter Property="Template"> |
||||
|
<Setter.Value> |
||||
|
<ControlTemplate TargetType="{x:Type local:BusyIndicator}"> |
||||
|
<Grid> |
||||
|
<VisualStateManager.VisualStateGroups> |
||||
|
<VisualStateGroup x:Name="VisibilityStates"> |
||||
|
<VisualState x:Name="Hidden"> |
||||
|
<Storyboard> |
||||
|
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="busycontent" Storyboard.TargetProperty="(UIElement.Visibility)"> |
||||
|
<DiscreteObjectKeyFrame KeyTime="00:00:00"> |
||||
|
<DiscreteObjectKeyFrame.Value> |
||||
|
<Visibility>Collapsed</Visibility> |
||||
|
</DiscreteObjectKeyFrame.Value> |
||||
|
</DiscreteObjectKeyFrame> |
||||
|
</ObjectAnimationUsingKeyFrames> |
||||
|
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="overlay" Storyboard.TargetProperty="(UIElement.Visibility)"> |
||||
|
<DiscreteObjectKeyFrame KeyTime="00:00:00"> |
||||
|
<DiscreteObjectKeyFrame.Value> |
||||
|
<Visibility>Collapsed</Visibility> |
||||
|
</DiscreteObjectKeyFrame.Value> |
||||
|
</DiscreteObjectKeyFrame> |
||||
|
</ObjectAnimationUsingKeyFrames> |
||||
|
</Storyboard> |
||||
|
</VisualState> |
||||
|
<VisualState x:Name="Visible"> |
||||
|
<Storyboard> |
||||
|
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="busycontent" Storyboard.TargetProperty="(UIElement.Visibility)"> |
||||
|
<DiscreteObjectKeyFrame KeyTime="00:00:00"> |
||||
|
<DiscreteObjectKeyFrame.Value> |
||||
|
<Visibility>Visible</Visibility> |
||||
|
</DiscreteObjectKeyFrame.Value> |
||||
|
</DiscreteObjectKeyFrame> |
||||
|
</ObjectAnimationUsingKeyFrames> |
||||
|
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="overlay" Storyboard.TargetProperty="(UIElement.Visibility)"> |
||||
|
<DiscreteObjectKeyFrame KeyTime="00:00:00"> |
||||
|
<DiscreteObjectKeyFrame.Value> |
||||
|
<Visibility>Visible</Visibility> |
||||
|
</DiscreteObjectKeyFrame.Value> |
||||
|
</DiscreteObjectKeyFrame> |
||||
|
</ObjectAnimationUsingKeyFrames> |
||||
|
</Storyboard> |
||||
|
</VisualState> |
||||
|
</VisualStateGroup> |
||||
|
<VisualStateGroup x:Name="BusyStatusStates"> |
||||
|
<VisualState x:Name="Idle"> |
||||
|
<Storyboard> |
||||
|
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="content" Storyboard.TargetProperty="(Control.IsEnabled)"> |
||||
|
<DiscreteObjectKeyFrame KeyTime="00:00:00"> |
||||
|
<DiscreteObjectKeyFrame.Value> |
||||
|
<sys:Boolean>True</sys:Boolean> |
||||
|
</DiscreteObjectKeyFrame.Value> |
||||
|
</DiscreteObjectKeyFrame> |
||||
|
</ObjectAnimationUsingKeyFrames> |
||||
|
</Storyboard> |
||||
|
</VisualState> |
||||
|
<VisualState x:Name="Busy"> |
||||
|
<Storyboard> |
||||
|
<ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.001" Storyboard.TargetName="content" Storyboard.TargetProperty="(Control.IsEnabled)"> |
||||
|
<DiscreteObjectKeyFrame KeyTime="00:00:00"> |
||||
|
<DiscreteObjectKeyFrame.Value> |
||||
|
<sys:Boolean>False</sys:Boolean> |
||||
|
</DiscreteObjectKeyFrame.Value> |
||||
|
</DiscreteObjectKeyFrame> |
||||
|
</ObjectAnimationUsingKeyFrames> |
||||
|
</Storyboard> |
||||
|
</VisualState> |
||||
|
</VisualStateGroup> |
||||
|
</VisualStateManager.VisualStateGroups> |
||||
|
<ContentControl x:Name="content" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/> |
||||
|
<Rectangle x:Name="overlay" Style="{TemplateBinding OverlayStyle}"/> |
||||
|
<ContentPresenter x:Name="busycontent"> |
||||
|
<ContentPresenter.Content> |
||||
|
<Grid HorizontalAlignment="Center" VerticalAlignment="Center"> |
||||
|
<Border Background="White" BorderThickness="1" CornerRadius="2"> |
||||
|
<Border.BorderBrush> |
||||
|
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> |
||||
|
<GradientStop Color="#FFA3AEB9" Offset="0"/> |
||||
|
<GradientStop Color="#FF8399A9" Offset="0.375"/> |
||||
|
<GradientStop Color="#FF718597" Offset="0.375"/> |
||||
|
<GradientStop Color="#FF617584" Offset="1"/> |
||||
|
</LinearGradientBrush> |
||||
|
</Border.BorderBrush> |
||||
|
<Border CornerRadius="1.5" Margin="1"> |
||||
|
<Border.Background> |
||||
|
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> |
||||
|
<GradientStop Color="#FFF6F8F9" Offset="0.02"/> |
||||
|
<GradientStop Color="#FFB8B8B8" Offset="0.996"/> |
||||
|
</LinearGradientBrush> |
||||
|
</Border.Background> |
||||
|
<Grid MinWidth="150"> |
||||
|
<Grid.RowDefinitions> |
||||
|
<RowDefinition/> |
||||
|
<RowDefinition Height="Auto"/> |
||||
|
</Grid.RowDefinitions> |
||||
|
<ContentPresenter Content="{TemplateBinding BusyContent}" ContentTemplate="{TemplateBinding BusyContentTemplate}" Margin="8"/> |
||||
|
<ProgressBar Grid.Row="1" Style="{TemplateBinding ProgressBarStyle}"/> |
||||
|
</Grid> |
||||
|
</Border> |
||||
|
</Border> |
||||
|
</Grid> |
||||
|
</ContentPresenter.Content> |
||||
|
</ContentPresenter> |
||||
|
</Grid> |
||||
|
</ControlTemplate> |
||||
|
</Setter.Value> |
||||
|
</Setter> |
||||
|
</Style> |
||||
|
|
||||
|
</ResourceDictionary> |
||||
@ -0,0 +1,37 @@ |
|||||
|
using System; |
||||
|
|
||||
|
namespace Microsoft.Windows.Controls |
||||
|
{ |
||||
|
internal static partial class VisualStates |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// Busyness group name.
|
||||
|
/// </summary>
|
||||
|
public const string GroupBusyStatus = "BusyStatusStates"; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Busy state for BusyIndicator.
|
||||
|
/// </summary>
|
||||
|
public const string StateBusy = "Busy"; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Idle state for BusyIndicator.
|
||||
|
/// </summary>
|
||||
|
public const string StateIdle = "Idle"; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// BusyDisplay group.
|
||||
|
/// </summary>
|
||||
|
public const string GroupVisibility = "VisibilityStates"; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Visible state name for BusyIndicator.
|
||||
|
/// </summary>
|
||||
|
public const string StateVisible = "Visible"; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Hidden state name for BusyIndicator.
|
||||
|
/// </summary>
|
||||
|
public const string StateHidden = "Hidden"; |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue