public class AsyncNotifier
{
public static void SetAnalysisText(DependencyObject obj, string text)
{
obj.SetValue(AnalysisTextProperty, text);
}
public static readonly DependencyProperty AnalysisTextProperty =
DependencyProperty.RegisterAttached("AnalysisText", typeof(string), typeof(AsyncNotifier), new PropertyMetadata(string.Empty, AnalysisTextCallback));
private static readonly DependencyProperty SpinnerProperty =
DependencyProperty.RegisterAttached("Spinner", typeof(Grid), typeof(AsyncNotifier));
public static void SetTrigger(DependencyObject obj, bool trigger)
{
obj.SetValue(TriggerProperty, trigger);
}
public static readonly DependencyProperty TriggerProperty =
DependencyProperty.RegisterAttached("Trigger", typeof(bool), typeof(AsyncNotifier));
private static void AnalysisTextCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var parentGrid = d as Grid;
if (parentGrid == null)
return;
bool trigger = (bool)parentGrid.GetValue(TriggerProperty);
Grid grid = parentGrid.GetValue(SpinnerProperty) as Grid;
if (grid == null)
{
grid = new Grid();
parentGrid.SetValue(SpinnerProperty, grid);
if (parentGrid.ColumnDefinitions.Count > 0)
Grid.SetColumnSpan(grid, parentGrid.ColumnDefinitions.Count);
if (parentGrid.RowDefinitions.Count > 0)
Grid.SetRowSpan(grid, parentGrid.RowDefinitions.Count);
}
grid.Background = Brushes.Transparent;
grid.Children.Clear();
ContentControl cont = new ContentControl();
StackPanel sp = new StackPanel();
TextBlock tb = new TextBlock() { Margin = new Thickness(0, 110, 0, 0), Text = e.NewValue == null ? string.Empty : e.NewValue.ToString() };
sp.Children.Add(tb);
cont.Content = sp;
cont.FontWeight = FontWeights.Bold;
cont.Style = (Style)parentGrid.FindResource("LoadingAdorner");
grid.Children.Add(cont);
if (!parentGrid.Children.Contains(grid))
parentGrid.Children.Add(grid);
grid.Visibility = (e.NewValue != null && trigger) ? Visibility.Visible : Visibility.Hidden;
}
}
private bool _isDataLoading;
public bool IsDataLoading
{
get { return _isDataLoading; }
set
{
_isDataLoading = value;
this.OnPropertyChanged("IsDataLoading");
}
}
private string _analysisText;
public string AnalysisText
{
get { return _analysisText; }
set
{
_analysisText = value;
this.OnPropertyChanged("AnalysisText");
}
}
IsDataLoading = false;
this.AnalysisText = null;
xmlns:Loader="clr-namespace:Rich.Testability.View.Analysis"
xmlns:Uc="clr-namespace:Rich.Testability.View.ObjectTree"
mc:Ignorable="d"
DataContextChanged="UserControl_DataContextChanged" >
<Grid Loader:AsyncNotifier.Trigger="{Binding Path=IsDataLoading}"
Loader:AsyncNotifier.AnalysisText="{Binding Path=AnalysisText}">
相关推荐
转圈抽奖,随即转圈定位,js实现抽奖,可以直接运行,已包括简单的css
通过Qt工具开发一款接口等待的通用类、可正常编译运行,无需再浪费时间调试,方便Qt软件开发者直接拿来使用,节省宝贵的研发时间。
加载转圈等待效果,自定义图片。loading Animation 转圈动画 等待 加载
简单的jQuery加载等待转圈页面小插件
提交等待转圈效果。
使用flex制作的一个非常好看的转圈效果。
主要为大家详细介绍了Android自定义View实现自动转圈效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
很好android自定义dialog加载转圈等待,适合初学,透明+正常两种主题,屏蔽返回键(自己修改参数,主题也是)
HTML、CSS、JS动态转圈等待效果
unity的启动一张图片,有时候手机卡的内存小的话启动比较慢,加了格转圈动画,告诉玩家我在加载中。
CSS3小球循环转圈加载特效是一款不规则的转圈,有5个小球互相撞击转圈来实现这款Loading动画特效。
android 转圈Demo 方法
php+ajax加载数据转圈动画图片.zip
Android加载中转圈动画效果
转圈效果图,供大家参考
易语言图像转圈源码,图像转圈,Init,InitCircleData,GetElementData,GetCircleData,Paint,DrawCircle,DrawDots,GetCircleCoordinate,GetClientRect,MoveWindow
Java代码实现圆圈旋转效果,比如在线看电影缓存时的旋转圆圈,网页刷新时的旋转圆圈,等待时
动态转圈表示进度 添加到你的项目即可调用,方便
CSS3小球循环转圈互相撞击实现的Loading加载特效.zip
这是一段NOIP2013提高组转圈游戏的题解,大家可以研究此代码……