none
Silverlight如何在运行时获取到某个控件的附加属性? RRS feed

  • 问题

  • Silverlight4.0版本 需要在客户端运行时获取某个控件的附加属性集合,比如Canvas下有一个TextBlock 这TextBlock会有两个

    附加属性:Canvas.Left,Canvas.Top  但是很多WPF的方法SL都不支持 请问有没有办法通过编码实现获取附加属性集合?

    2010年3月29日 6:39

答案

  • 你好,

          一般附加属性都会带有静态方法来获得值,比如Validation.Errors附加属性

          在运行时可以这样, Validation.GetErrors("对象名")。

           Canvas.GetLeft(xx);

           Canvas.GetRight(xx);

    2010年4月5日 8:48

全部回复

  • 这种还是通过依赖属性实现的
    2010年3月30日 0:41
  • 这些都是属于依赖属性,通过GetValue()

    2010年3月30日 0:48
  • 不看到,好像只有wpf可以
    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2010年3月30日 1:08
    版主
  • 通过GetValue 是在知道有哪些附加属性的情况下调用取值 我想在不知道某个元素有多少附加属性下获取所有附加属性集合 然后循环调用

    网上查阅了下都是WPF的方式

    2010年3月30日 1:52
  • 终于想到一个方法,请你试试

     //1.得到附加属性列表的类

    Type type = typeof(FrameworkElement);

    //2.取出属性
    FieldInfo[] propList = type.GetFields(BindingFlags.Static | BindingFlags.Public);

    //3.最后再判断一下属性的返回类型是不是DependencyProperty

    foreach (FieldInfo item in propList)
                {
                    if (item.FieldType.Name == "DependencyProperty")
                    {

                    }
                }

     


    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2010年3月30日 2:08
    版主
  • 版主的代码最多只是返回某个指定类型下的依赖属性 我要的是实例化后的对象拥有的附加属性
    2010年3月30日 9:10
  • 你好,

          一般附加属性都会带有静态方法来获得值,比如Validation.Errors附加属性

          在运行时可以这样, Validation.GetErrors("对象名")。

           Canvas.GetLeft(xx);

           Canvas.GetRight(xx);

    2010年4月5日 8:48