Adding custom attributes to an element in XAML?

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

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

Then you can read that property via javascript.

Can you do the same thing in wpf? For example:

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

and If so how would you access that property? For example:

MyCanvas.MyProperty;

Answers


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.


Need Your Help

How to call HttpHandler from .cs file asp.net

c# asp.net httphandler

I have created a http handler fro my Jquery ajax call. which is working fine the jquery call is mentioned below

Use different Procfile in development and production

heroku sinatra rack foreman shotgun

I have a homemade Sinatra application for which I intend to use Heroku to host it.