none
WPF中,如何自定义类似于x:Name的属性? RRS feed

  • 问题

  • 我需要对WPF控件(如Button、TextBlock)添加一个功能,但我不想对这些控件进行封装。希望以附加属性的方式来实现。

    目前我的解决方法是:定义一个工具类,在类中定义附加属性,然后在XAML中使用该附加属性。

    例如,我在MyHelperClass中定义了附加属性MyAttachedProperty,然后在Button标签中使用:

    <Button myns:MyHelperClass.MyAttachedProperty="value"/>

    我想解决的是,如何省略标签中的类名,如:

    <Button myns:MyAttachedProperty="value"/>

    即类似于x:Name属性这样的效果(x:Name几乎可以覆盖所有的Xaml中的元素)。

    如果x:Name使用了特殊的实现方法,还请不吝赐教。

    谢谢!

    2015年6月11日 7:38

答案

全部回复

  • Hi Lymim,

    >>"我想解决的是,如何省略标签中的类名"

    据我所知没有你所说的这种实现方式,因为你在xaml页面中“xmlns:xxx=”添加的是命名空间

    >>"类似于x:Name属性这样的效果"

    属性这种说法不正确,它是一条指令,它实现类似于向xaml元素注册一个Name属性,具体可以参考这个文档:x:Name Directive

    Best Regards,

    Xavier Eoro


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年6月12日 7:13
    版主
  • 很抱歉由于前一段时间出差,没能及时回复。

    首先非常感谢你的回答。

    可能我没有表达清楚我的意思,但是我提问的目的是:如何达到x:Name的效果。

    我很清楚我的实现方法是用附加属性来为XAML元素添加额外的属性,而我需要解决的问题是:如何省去类名这一部分的内容,事实上我不关心最终实现的方法是否仍然为附加属性。

    我事先已经阅读过x:Name相关的文档,也知道它并非通常意义上的属性,但问题是它最终的表现就像是一个存在于x命名空间的万能属性,我就是需要它的实现方式

    *如果x:Name使用了特殊的实现方法,还请不吝赐教。


    • 已编辑 Lymim 2015年6月14日 12:26
    2015年6月14日 12:25
  • ?????
    • 已标记为答案 Lymim 2015年6月15日 3:57
    • 已编辑 Shi Xin 2015年7月27日 6:06
    2015年6月14日 14:58
  • 嗯,这样就了解了。
    2015年6月15日 3:57