Подтвердить что ты не робот

Добавление пользовательских атрибутов к элементу в XAML?

В 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;
4b9b3361

Ответ 1

Ближе всего вы можете получить прикрепленные свойства. В принципе, другой класс определяет известное свойство (то есть MyProperty), которое может быть установлено для других элементов.

Примером может быть свойство Canvas.Left, которое используется Canvas для размещения дочернего элемента. Но любой класс может определить прикрепленное свойство.

Прикрепленные свойства являются ключевыми для прикрепленных поведений, что является отличной функцией WPF/Silverlight.

EDIT:

Вот пример класса:

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 и передать в элементе, на котором установлено свойство.