1、WPF事件中的sender就是事件源
可以看到wpf中所有的事件都是这个格式:
private void btnTest_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
btn.Content = "i am the soure contrl";
}
其中的sender 指的是事件源,也就是触发该事件的控件
2、WPF的窗体设置WindowStyle=none时,如何移动窗体
1. 在WPF中当将主窗体的WindowStyle设置为none时,使用鼠标移动不了窗体
2. 解决方法:
2.1. 在Windows的Load方法中增加一下代码:
1 2 3 4 |
|
2.2. 重写主窗体的 OnMouseLefButtonDown()方法:
1 2 3 4 5 6 7 |
|
3、WPF的菜单栏,工具栏的简单使用
<Grid>
<DockPanel><!--停靠布局,让菜单栏和工具栏位于窗口顶部-->
<Menu DockPanel.Dock="Top">
<MenuItem Header="File"><!--菜单项为MenuItem,文字使用属性 Header-->
<MenuItem Name="menuOpen" Header="Open" Click="menuOpen_Click"></MenuItem>
<MenuItem Header="Save"></MenuItem>
<MenuItem Header="Delete"></MenuItem>
</MenuItem>
<MenuItem Header="Edit"></MenuItem>
<MenuItem Header="View"></MenuItem>
<MenuItem Header="About"></MenuItem>
</Menu>
<ToolBar DockPanel.Dock="Top"><!--ToolBar和StatusBar就是一个容器-->
<Button Content="Save"></Button>
<Button Content="SaveAll"></Button>
<Button Content="FileExplorer"></Button>
<Button Content="Start"></Button>
<Button Content="Test"></Button>
</ToolBar>
<TextBox DockPanel.Dock="Top" Text="This is my space" Height="243"></TextBox>
<StatusBar DockPanel.Dock="Bottom">
<TextBlock Text="statusBar"></TextBlock>
</StatusBar>
</DockPanel>
</Grid>
4、Visual Studio中修改项目的输出目录
1. 如在Solution中的项目名称为 ProjectA
但在本地目录显示却想换成: MyProject
2. 应该做的修改是:
2.1. 将本地目录的 ProjectA手动修改成 MyProject
2.2. 用文本编辑器打开 .sln文件,找到类似这样的信息
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "ProjectA\ProjectA.csproj", "{7EE79488-BF06-4270-9710-664E1086426C}"
修改为:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "MyProject\ProjectA.csproj", "{7EE79488-BF06-4270-9710-664E1086426C}"
然后Rebuild一下就OK了
5、WPF设置动画在控件载入时就立刻执行
<控件名.Triggers>
<EventTrigger RoutedEvent="控件名.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width" From="0" To="150" Duration="0:0:5" />
<DoubleAnimation Storyboard.TargetProperty="Height" From="0" To="100" Duration="0:0:5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</控件名.Triggers>
6、使用Rectangle+ImageBrush来代替Image,解决图片模糊的问题
<Rectangle Margin="0" Stroke="Black" HorizontalAlignment="Right" Width="151.5" Grid.Row="1" StrokeThickness="0">
<Rectangle.Fill>
<ImageBrush ImageSource="skin/logo.png" Stretch="Uniform"/>
</Rectangle.Fill>
</Rectangle>
7、WPF中使用RenderTransformOrigin来控制动画的起点
Render :渲染;Transform:动画;Origin:起点
RenderTransformOrigin:渲染动画的起点
取值为一个坐标的形式 取值范围: 0,0 到 1,1
0,0:表示左上角,如此设置后动画会以左上角为基准点开始;
0.5,0.5:表示中心;
1,1:表示右下角;
RenderTransformOrigin="0.5,0.5"
8、WPF的DispatcherTimer--定时器的使用
public MainWindow()
{
InitializeComponent();
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
//这里是要定时执行的方法
}
9、WPF解决当ScrollViewer中嵌套ItemsControl时,不能使用鼠标来滚动翻页
ScrollViewer:滚动条容器,当内容超过指定的长度和宽度后,就会出现滚动条,而且可以使用鼠标中键来滚动。
当ScrollViewer中包含ItemsControl时,因为ItemsControl自身也有滚动的功能,所以在ListBox的元素区域中使用鼠标滚轮无效,
但在两个ListBox的交界处还是有效果的,所以我们需要做的,就是讲ListBox的滚动事件与外层的ScrollViewer的滚动关联起来。
代码中使用了FrameworkElement类型的参数,因为这个方法的作用是让内层的ListBox与外层的ScrollViewer关联起来,但当两
者之间还有别的元素时,这个方法的参数应该传入的是ScrollViewer的直接子元素,而不是深层的ListBox。
public MainWindow()
{
InitializeComponent();
UseTheScrollViewerScrolling(外层控件);
}
public void UseTheScrollViewerScrolling(FrameworkElement fElement)
{
fElement.PreviewMouseWheel += (sender, e) =>
{
var eventArg = new MouseWheelEventArgs(e.MouseDevice, e.Timestamp, e.Delta);
eventArg.RoutedEvent = UIElement.MouseWheelEvent;
eventArg.Source = sender;
fElement.RaiseEvent(eventArg);
};
}
10、WPF获取程序版本号(Version)的方法
1.第一种:通过System来获取
public static Version GetEdition()
{
return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
}
2.第二种:通过Application来获取
Application.ResourceAssembly.GetName().Version.ToString();
11、WPF在XAML中使用MultiBinding的两个例子
使用MultiBinding的原则:数据源有一个以上;
1. 需求:在一个需要显示的内容中,不同的部分要进行的处理不一样,这时可以使用MultiBinding
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1} {2}">
<Binding Path="DownloadViewModel.TotalDeviceCount" />
<Binding Path="Language" Converter="{StaticResource LanConverter}" ConverterParameter="Problem"/>
<Binding Path="DownloadViewModel.TotalDeviceCount" Converter="{StaticResource NumToPluralConverter}" ConverterParameter="Driver" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
12、WPF中使用TextBlock的Inlines属性来完成复杂的文字内容
. 需求:要在一行内容中显示不同颜色以及粗细不一的字体,
https://blog.csdn.net/zhangjiyehandsom/article/details/5498845
13、WPF中List的Add()与Insert()方法的区别
public void Add(T item); 可以看出,Add方法只可接受一个参数,而且加入的元素会按加入的顺序进行排序,
如依次往List中Add(), 7 8 9 那么结果就是 {7, 8, 9}
public void Insert(int index, T item); 该方法接受两个参数,第一个为下标,第二个为要添加的元素
需求: 要求往List中添加数据,而且后面加的数据始终要排在第一的位置,
添加 5 6 7 8 9,通过Insert(0, number), 这里的0就代表第一个位置,那么结果为{9, 8, 7, 6, 5}
14、WPF将TextBox的边框设为圆角的
方法一、CornerRadius="5"
<Border CornerRadius="5"
Height="35"
BorderThickness="1"
BorderBrush="#FF737070">
<TextBox Height="32"
Name="textBox1"
Width="156"
Background="{x:Null}"
BorderThickness="0"
FontSize="22" />
</Border>
方法二、通过资源定义
<Window.Resources>
<Style x:Key="RoundCornerTextStyle"
TargetType="{x:Type TextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="border"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="10"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<TextBox Background="White"
Width="100"
Height="50"
Text="我的"
Style="{StaticResource RoundCornerTextStyle}">
</TextBox>
15、WPF创建简单的旋转动画
前台
<Grid>
<Rectangle Height="72"
HorizontalAlignment="Left"
Margin="143,132,0,0"
Name="rectangle2"
Stroke="Black"
VerticalAlignment="Top"
Width="101"
Fill="#FF967878" />
<Button Content="Button"
Height="22"
HorizontalAlignment="Left"
Margin="143,45,0,0"
Name="button1"
VerticalAlignment="Top"
Width="75"
Click="button1_Click" />
</Grid>
后台:
private void button2_Click(object sender, RoutedEventArgs e)
{
RotateTransform rtf = new RotateTransform();
rectangle2.RenderTransform = rtf;
DoubleAnimation dbAscending = new DoubleAnimation(0, 360, new Duration(TimeSpan.FromSeconds(1)));
dbAscending.RepeatBehavior = RepeatBehavior.Forever;
rtf.BeginAnimation(RotateTransform.AngleProperty, dbAscending);
}
16、WPF设置控件获取键盘焦点时的样式FocusVisualStyle
<Window.Resources>
<!--将获取焦点的样式设置为红色边框-->
<Style x:Key="newFocusStyle">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="-2" StrokeThickness="1" Stroke="Red"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Button FocusVisualStyle="{DynamicResource newFocusStyle}"/>
18、使用DataTrigger来代替Triggerr
当属性等于某个值,同时鼠标移入时的需求:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter TargetName="LayoutRoot" Property="Background" Value="Red"/>
</MultiDataTrigger>
19、C#中字节数组(byte[])和字符串相互转换
转换过程主要使用到System.Text.Encoding命名空间下的类
1. 字符串转换成字节数组byte[]:
string str = "This is test string";
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);
2.字节数组换成字符串:
byte[] byteArray = 通过某种方式获取到的字节数组
string str = System.Text.Encoding.Default.GetString(byteArray);
20、WPF在XAML中实现持续动画的暂停、恢复、停止
1.动画通过EventTrigger监听按钮的FrameworkElement.Loaded事件,但控件载入时就进行动画,
持续动画通过<BeginStoryboard Name="yourStoryName">下的<Storyboard>或者子动画的RepeatBehavior=Forever来实现,
鼠标的移入移出,通过监听UIElement.MouseEnter和UIElement.MouseLeave事件,
鼠标移入时,通过<PauseStoryboard BeginStoryboardName="yourStoryName"/>来暂停动画,
鼠标移出时,通过<ResumeStoryboard BeginStoryboardName="yourStoryName"/>来恢复动画,具体代码如下:
<Button Content="Click Me">
<Button.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Name="OpacityStoryboard">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(UIElement.Opacity)"
From="0" To="1" RepeatBehavior="Forever" AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="UIElement.MouseEnter">
<PauseStoryboard BeginStoryboardName="OpacityStoryboard" />
</EventTrigger>
<EventTrigger RoutedEvent="UIElement.MouseLeave">
<ResumeStoryboard BeginStoryboardName="OpacityStoryboard" />
</EventTrigger>
</Button.Triggers>
</Button>
21、C#的OpenFileDialog的简单用法
private void btnSelectFile_Click(object sender, EventArgs e)
{
openFileDialog1.InitialDirectory = "c:\\";//默认路径,注意这里写路径时要用c:\\而不是c:\
openFileDialog1.Filter = "XML文件|*.xml";//过滤的文件,以|隔开,如“文本文件|*.*|Java文件|*.java”
openFileDialog1.RestoreDirectory = true;//但打开对话框后,文件内容有改变了,是否同步刷新
openFileDialog1.FilterIndex = 1;//当filter有多个时,选择默认的filter,注意,下标时从1开始,如果只有一个filter可以不用写这个属性
if (openFileDialog1.ShowDialog() == DialogResult.OK)//这个是关键,意思是当你选择了文件后并点击了OK按钮
{
lblFilePath.Text = openFileDialog1.FileName;//获取选中文件的路径是通过FileName属性来获得
}
}
22、C#读取excel文件的内容(使用DataSet)
https://www.cnblogs.com/tommy-huang/p/6004928.html
16、WPF创建简单的加载等待动画
复制以下代码加在图中红线部分
<Window.Resources>
<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse"
Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.1000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse1">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.2000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.6000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.1000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse2">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.3000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.7000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.2000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse3">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.4000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.8000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.3000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse4">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.9000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.4000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse5">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.6000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.5000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse6">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.7000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.1000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.6000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse7">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.8000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.2000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.7000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse8">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.9000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.3000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.8000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse9">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.4000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:01.9000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse10">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.1000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.5000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse11">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.2000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.6000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02.1000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse12">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.3000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.7000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02.2000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse13">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.4000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.8000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02.3000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse14">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.5000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.9000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02.4000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse15">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.6000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02.5000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse16">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.7000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.1000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02.6000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetProperty="(UIElement.Opacity)"
RepeatBehavior="Forever"
Storyboard.TargetName="ellipse17">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:01.8000000"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02.2000000"
Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:02.7000000"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
RepeatBehavior="Forever"
Storyboard.TargetName="border"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.5000000"
Value="180" />
<SplineDoubleKeyFrame KeyTime="00:00:01"
Value="360" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
RepeatBehavior="Forever"
Storyboard.TargetName="border1"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">
<SplineDoubleKeyFrame KeyTime="00:00:00"
Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:02"
Value="180" />
<SplineDoubleKeyFrame KeyTime="00:00:04"
Value="360" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Window.Resources>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource Storyboard1}" />
</EventTrigger>
</Window.Triggers>
<Grid x:Name="LayoutRoot"
Background="Black">
<Viewbox Width="18"
Height="18">
<Grid HorizontalAlignment="Center"
x:Name="loading"
Margin="0"
VerticalAlignment="Center"
Width="3.333"
Height="3.333"
Visibility="Visible">
<Ellipse RenderTransformOrigin="0.468,3.443"
x:Name="ellipse"
Fill="RoyalBlue"
Stroke="{x:Null}"
d:IsHidden="True" />
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse1"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="20" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse2"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="40" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse3"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="60" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse4"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="80" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse5"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="100" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse6"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="120" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse7"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="140" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse8"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="160" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse9"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="180" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse10"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="200" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse11"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="220" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse12"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="240" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse13"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="260" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse14"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="280" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse15"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="300" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse16"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="320" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.468,3.443"
Fill="RoyalBlue"
Stroke="{x:Null}"
x:Name="ellipse17"
d:IsHidden="True">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="340" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse RenderTransformOrigin="0.5,0.499"
x:Name="ellipse_Copy"
Fill="RoyalBlue"
Stroke="{x:Null}"
Margin="-0.012,0,0.001,-9.67"
VerticalAlignment="Bottom"
Height="3.344">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="0" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Border RenderTransformOrigin="0.492,1.006"
Margin="1.081,0,1.086,-8.056"
x:Name="border"
VerticalAlignment="Bottom"
Height="8.622"
Background="RoyalBlue"
CornerRadius="1,1,0,0">
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="0" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Border.RenderTransform>
</Border>
<Border Height="5"
Background="RoyalBlue"
CornerRadius="1,1,0,0"
RenderTransformOrigin="0.496,1.001"
Margin="1,0,0.333,-7.667"
x:Name="border1"
VerticalAlignment="Bottom">
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="1"
ScaleY="1" />
<SkewTransform AngleX="0"
AngleY="0" />
<RotateTransform Angle="0" />
<TranslateTransform X="0"
Y="0" />
</TransformGroup>
</Border.RenderTransform>
</Border>
</Grid>
</Viewbox>
</Grid>