一.前言
申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接。
本文主要有三种实现方式:
- 简单忙碌状态控件BusyBox;
- Win8/win10效果忙碌状态控件ProgressRing;
- 弹出异步等待框WaitingBox;
二.简单忙碌状态控件BusyBox
效果图:
通过属性"IsActive"控制控件是否启用,后台C#代码:
/// <summary>
/// BusyBox.xaml 的交互逻辑
/// </summary> public partial class BusyBox : UserControl { public static readonly DependencyProperty IsActiveProperty = DependencyProperty.Register("IsActive", typeof(bool), typeof(BusyBox), new PropertyMetadata(false)); /// <summary> /// 是否启用 /// </summary> public bool IsActive { get { return (bool)GetValue(IsActiveProperty); } set { SetValue(IsActiveProperty, value); } } static BusyBox() { DefaultStyleKeyProperty.OverrideMetadata(typeof(BusyBox), new FrameworkPropertyMetadata(typeof(BusyBox))); } }
使用了一个字体图标,触发器中实现动画显示的控制,样式代码:
<Style TargetType="{x:Type local:BusyBox}"> <Setter Property="Foreground" Value="