首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向XAML中的元素添加自定义属性?

向XAML中的元素添加自定义属性?
EN

Stack Overflow用户
提问于 2011-04-26 04:25:27
回答 1查看 23.1K关注 0票数 22

在html中,没有什么可以阻止您创建自定义属性,因为它实际上是xml,比如

代码语言:javascript
复制
<span myProperty="myValue"></span>

然后,您可以通过javascript读取该属性。

你能在wpf中做同样的事情吗?例如:

代码语言:javascript
复制
<Canvas MyProperty="MyValue" Name="MyCanvas" DataContext="{Binding}" Background="Black" Margin="181,0,0,0"></Canvas>

如果是这样,您将如何访问该属性?例如:

代码语言:javascript
复制
MyCanvas.MyProperty;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-26 04:37:14

你能得到的最接近的是attached properties。基本上,另一个类定义了一个已知属性(即MyProperty),可以在其他元素上设置该属性。

Canvas.Left属性就是一个例子,画布使用它来定位子元素。但是任何类都可以定义附加属性。

附加属性是attached behaviors背后的关键,这是WPF/Silverlight的一个很好的特性。

编辑:

下面是一个示例类:

代码语言:javascript
复制
namespace MyNamespace {
    public static class MyClass {

        public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.RegisterAttached("MyProperty",
            typeof(string), typeof(MyClass), new FrameworkPropertyMetadata(null));

        public static string GetMyProperty(UIElement element) {
            if (element == null)
                throw new ArgumentNullException("element");
            return (string)element.GetValue(MyPropertyProperty);
        }
        public static void SetMyProperty(UIElement element, string value) {
            if (element == null)
                throw new ArgumentNullException("element");
            element.SetValue(MyPropertyProperty, value);
        }
    }
}

然后在XAML中,你可以这样使用它:

代码语言:javascript
复制
xmlns:local="clr-namespace:MyNamespace"

<Canvas local:MyClass.MyProperty="MyValue" ... />

您可以使用MyClass.GetMyProperty从代码中获取属性,并传入设置了该属性的元素。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5782864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档