WPF MarkupExtension

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF MarkupExtension相关的知识,希望对你有一定的参考价值。

原文:WPF MarkupExtension

创建自己的特殊标签。

继承Markupextension。

具体用法很简单:

技术图片
  public class IsBiggerNumberExtension : MarkupExtension
    {
        public IsBiggerNumberExtension(object num)
        {
            Number = num;
        }
         public object Number
        {
            get;
            set;
        }
        public IsBiggerNumberExtension()
        {

        }
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            var target = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;

            var dp = target.TargetProperty as DependencyProperty;

            var dpo = target.TargetObject as DependencyObject;

            double d = 0,d2=0;

            var n = double.TryParse(dpo.GetValue(dp).ToString(),out d);

            var n1= double.TryParse(Number.ToString(), out d2);

            var result = d>d2;

            var h = dp.IsValidType(result);

            return h?result:(object)result.ToString();
        }
    }
技术图片

 

<TextBlock Grid.Row="1"  Text="{local:IsBiggerNumber 1}" >

 

 

本例是非常垃圾的。

准确的说是根本排不上用场。

 

这里面最主要的就是ProvideValue这个方法的里面参数

通过这个参数我们可以获取是什么控件,是什么属性在使用这个标签。

 

以上是关于WPF MarkupExtension的主要内容,如果未能解决你的问题,请参考以下文章

WPF MarkupExtension

WPF中自定义MarkupExtension

WPF中自定义MarkupExtension

WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了

WPF 我的程序出现“MarkupExtension 对 Setter.Value 无效”错误但在运行时工作正常

MarkupExtension的使用