Самое близкое, что вы можете получить, это прикрепленные свойства . По сути, другой класс определяет известное свойство (т. Е. 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
и передав элемент, для которого установлено свойство.