超炫酷的WPF实现Loading控件效果

2019-12-30 11:11:34刘景俊

易采站长站为您分析超炫酷的WPF实现Loading控件效果,感兴趣的小伙伴们可以参考一下

Win8系统的Loading效果还是很不错的,网上也有人用CSS3等技术实现,研究了一下,并打算用WPF自定义一个Loading控件实现类似的效果,并可以让用户对Loading的颗粒(Particle)背景颜色进行自定义,话不多说,直接上代码:

1、用VS2012新建一个WPF的用户控件库项目WpfControlLibraryDemo,VS自动生成如下结构:

超炫酷的WPF实现Loading控件效果

2、删除UserControl1.xaml,并新建一个Loading的CustomControl(不是UserControl),如下图所示:

超炫酷的WPF实现Loading控件效果

3、如果报错找不到Loading类型,请编译,下面在Generic.xaml主题文件中对Loading的样式和内容进行定义(注意添加

 

 
  1. xmlns:system = "clr-namespace:System;assembly=mscorlib"),代码如下:  <ResourceDictionary 
  2. xmlns="http://www.easck.com/winfx/2006/xaml/presentation"  xmlns:x="http://www.easck.com/winfx/2006/xaml" 
  3. xmlns:system = "clr-namespace:System;assembly=mscorlib"  xmlns:local="clr-namespace:WpfControlLibraryDemo"> 
  4.    
  5. <Style TargetType="{x:Type local:Loading}">  <Setter Property="Template"> 
  6. <Setter.Value>  <ControlTemplate TargetType="{x:Type local:Loading}"> 
  7. <Border Background="{TemplateBinding Background}"  BorderBrush="{TemplateBinding BorderBrush}" 
  8. BorderThickness="{TemplateBinding BorderThickness}">  <Grid Width = "50" Height = "50"> 
  9. <Grid.Resources>  <!-- Value Converters --> 
  10.   <!-- Particle Styling ,must to has RelativeSource --> 
  11. <SolidColorBrush x:Key = "ParticleColor" Color = "{Binding Path=FillColor,RelativeSource={RelativeSource TemplatedParent}}" />  <SolidColorBrush x:Key = "ParticleBackgroundColor" Color = "Transparent"/>