在XAML中向元素添加自定义属性

本文关键字:添加 自定义属性 元素 XAML | 更新日期: 2023-09-27 17:52:46

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

<span myProperty="myValue"></span>

然后你可以通过javascript读取属性

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

<Canvas MyProperty="MyValue" Name="MyCanvas" DataContext="{Binding}" Background="Black" Margin="181,0,0,0"></Canvas>

,如果是,如何访问该属性?例如:

MyCanvas.MyProperty;

在XAML中向元素添加自定义属性

最接近的是附加属性。基本上,另一个类定义了一个已知属性(即MyProperty),它可以在其他元素上设置。

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

附加属性是附加行为背后的关键,这是WPF/Silverlight的一个伟大特性。

编辑:

下面是一个示例类:

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中你可以这样使用:

xmlns:local="clr-namespace:MyNamespace"
<Canvas local:MyClass.MyProperty="MyValue" ... />

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