WPF 通过名称查找属性(DependencyProperty)
使用名称来查找DependencyProperty。
如果有这样的需求,则是需要通过DependencyPropertyDescriptor来查找。
通常是使用附加属性或者依赖属性的方法。
下面给出附加属性的例子:
这个是注册附加属性,利用string来输入要查找的属性
public static readonly DependencyProperty AniInvokeParameterProperty = DependencyProperty.RegisterAttached("AniInvokeParameter", typeof(string), typeof(AniInvoke));
public static void SetAniInvokeParameter(DependencyObject d, string value) => d.SetValue(AniInvokeParameterProperty, value);
public static string GetAniInvokeParameter(DependencyObject d) => (string)d.GetValue(AniInvokeParameterProperty);
具体DependencyPropertyDescriptor使用
public static readonly DependencyProperty AniInvokePropery = DependencyProperty.RegisterAttached("AniInvoke", typeof(AnimationTimeline), typeof(AniInvoke), new PropertyMetadata(null, AniInvokeCallBack));
public static void SetAniInvoke(DependencyObject d, AnimationTimeline value) => d.SetValue(AniInvokePropery, value);
public static AnimationTimeline GetAniInvoke(DependencyObject d) => (AnimationTimeline)d.GetValue(AniInvokePropery);
private static void AniInvokeCallBack(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var t = d as FrameworkElement;
var dpName = t.GetValue(AniInvokeParameterProperty) as string;
if (!string.IsNullOrWhiteSpace(dpName))
{
var dpd = DependencyPropertyDescriptor.FromName(dpName, t.GetType(), t.GetType());
var property = dpd.DependencyProperty;
var ani = (AnimationTimeline)e.NewValue;
if (property != null && ani != null)
t.BeginAnimation(property, ani);
}
}
Xaml 代码
<Grid Grid.Row="" Background="Red" ado:AniInvoke.AniInvokeParameter="Width" >
<ado:AniInvoke.AniInvoke>
<DoubleAnimationUsingKeyFrames>
<EasingDoubleKeyFrame Value="" KeyTime="00:00:02">
<EasingDoubleKeyFrame.EasingFunction>
<CubicEase EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
<EasingDoubleKeyFrame Value="" KeyTime="00:00:06">
<EasingDoubleKeyFrame.EasingFunction>
<BounceEase Bounces="" EasingMode="EaseOut"/>
</EasingDoubleKeyFrame.EasingFunction>
</EasingDoubleKeyFrame>
</DoubleAnimationUsingKeyFrames>
</ado:AniInvoke.AniInvoke>
</Grid>

WPF 通过名称查找属性(DependencyProperty)的更多相关文章
- WPF 按名称查找控件
1FrameworkElement类FindName方法 使用过程 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindN ...
- WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性
原文:WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性 如果你要自定义一个图片按钮控件,那么如何在主窗体绑定这个控件上图片的Source呢? ...
- WPF的依赖项属性
WPF的依赖项属性 属性与事件是.NET抽象模型的核心部分.WPF使用了更高级的依赖项属性(Dependency Property)功能来替换原来.NET的属性,实现了更高效率的保存机制,还添加了附加 ...
- 【WPF学习笔记】之WPF基础:依赖关系属性和通知
这些天来,对象似乎已经忙得晕头转向了.每个人都希望它们做这做那.Windows® Presentation Foundation (WPF) 应用程序中的典型对象会接到各种各样不同的请求:有要求绑定到 ...
- 【WPF学习笔记】[转]周银辉之WPF中的动画 && 晓风影天之wpf动画——new PropertyPath属性链
(一)WPF中的动画 动画无疑是WPF中最吸引人的特色之一,其可以像Flash一样平滑地播放并与程序逻辑进行很好的交互.这里我们讨论一下故事板. 在WPF中我们采用Storyboard(故事板)的方式 ...
- WPF中的依赖属性
1. WPF中的依赖属性 依赖属性是专门基于WPF创建的.在WPF库实现中,依赖属性使用普通的C#属性进行了包装,使用方法与普通的属性是相同的. 1.1 依赖属性提供的属性功能 资源 数据绑定 样式 ...
- WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了
原文:WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4 ...
- WPF 精修篇 依赖属性
原文:WPF 精修篇 依赖属性 依赖属性使用场景 1. 希望可在样式中设置属性. 2. 希望属性支持数据绑定. 3. 希望可使用动态资源引用设置属性. 4. 希望从元素树中的父元素自动继承属性值. 5 ...
- [转] WinForm自定义函数FindControl实现按名称查找控件
原文地址 WinForm自定义函数FindControl实现按名称查找控件 本文所述实例实现WinForm自定义函数FindControl实现按名称查找控件的功能,在C#程序开发中有一定的实用价值. ...
随机推荐
- 小鸟初学Shell编程(九)环境变量变量配置文件
介绍 在上一篇使用完了环境变量,并且知道PATH环境变量概念,那么我们对命令的执行就有了一定深入的理解.那么PATH环境变量或其他环境变量是保存在哪呢?那么这篇文章主要介绍环境变量配置文件. 配置文件 ...
- jQuery 遍历方法大全
下表列出了用于jQuery 遍历所有方法. 方法 描述 add() 将元素添加到匹配的元素集中 addBack() 将上一组元素添加到当前组中 andSelf() 在版本1.8中已弃用. addBac ...
- hashlib以及hmac的日常应用
首先我们要明白日常的Web网页为了保证数据的安全都会对数据的存储进行一些加密,当我需要在此网站验证时就需要对原有的密码以及账号进行加密此时我们就需要用到hashlib这个框架的一些功能,下面我就来更大 ...
- 使用nginx配置带有权限验证的反向代理
环境:centos6u3 1.安装nginx (1)上传nginx nginx-1.14.0.tar.gz.可以从nginx官网下载http://nginx.org/en/download.html ...
- vmworkstation pro安装
runtime dll安装程序未能完成安装 解决方法: 1.出现这个问题的时候不要点确定(如果点了确定,会找不到步骤4中的文件夹) 2.win+R调出 '运行' 3.输入%temp%,进入C:\Use ...
- 201871020225-牟星源《面向对象程序设计(java)》第6-7周学习总结
201871020225-牟星源<面向对象程序设计(java)>第6-7周学习总结 博文正文: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu- ...
- 获取 Docker 容器的 IP 地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' yourContainerIdOrContainerName
- JWT 使用的另一种声音
讲真,别再使用JWT了! 把本应该session 中保存的数据 去除敏感字段 保留到客户端 在Web应用中,使用JWT替代session并不是个好主意 适合JWT的使用场景 抱歉,当了回标题党.我 ...
- pikachu的xss及csrf
一.XSS 可解析的js 未经过滤 XSS见框就插 script 大小写 中间插入 <img src="" onerror="alert(11111)&q ...
- 刘长峰 js基础讲座笔记 课后作业
1.DataType Assert 数据类型断言 一.typeof : 判断变量的类型 ,返回字符串 typeof a 返回 'undefined' .'boolean' .'string' .' ...