Adding custom attributes to an element in XAML?

前端 未结 1 1074
野趣味
野趣味 2020-12-05 07:30

In html, there is nothing preventing you from creating custom attributes, since it is effectively xml such as



        
相关标签:
1条回答
  • 2020-12-05 08:07

    The closest you can get are attached properties. Basically, another class defines a known property (i.e. MyProperty), which can be set on other elements.

    An example would be the Canvas.Left property, which is used by the Canvas to position a child element. But any class can define an attached property.

    Attached properties are the key behind attached behaviors, which is a great feature of WPF/Silverlight.

    EDIT:

    Here is an example class:

    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);
            }
        }
    }
    

    Then in XAML you can use it like so:

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

    You can get the property from code using MyClass.GetMyProperty and passing in the element on which the property is set.

    0 讨论(0)
提交回复
热议问题