WPF 通过名称查找属性(DependencyProperty)
2021-03-07 07:27
标签:tps col mat space asi span anim property eve
使用名称来查找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使用 Xaml 代码 WPF 通过名称查找属性(DependencyProperty) 标签:tps col mat space asi span anim property eve 原文地址:https://www.cnblogs.com/lonelyxmas/p/12833960.html
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);
}
}
文章标题:WPF 通过名称查找属性(DependencyProperty)
文章链接:http://soscw.com/index.php/essay/61230.html