Ваша декларация о недвижимости неверна. Вы должны вызвать RegisterAttached
вместо Register
, и третий аргумент, передаваемый методу, должен указывать тип класса, который объявляет свойство.
Кроме того, объявивший класс не нужно выводить из DependencyObject
, и даже может быть объявлен как stati c:
public static class AQDatagridDependencyProperties
{
public static readonly DependencyProperty CustomDataSourceProperty =
DependencyProperty.RegisterAttached( // here
"CustomDataSource",
typeof(string),
typeof(AQDatagridDependencyProperties), // and here
new PropertyMetadata("obuolys"));
public static string GetCustomDataSource(AQDataGrid element)
{
return (string)element.GetValue(CustomDataSourceProperty);
}
public static void SetCustomDataSource(AQDataGrid element, string value)
{
element.SetValue(CustomDataSourceProperty, value);
}
}
Вы можете установить это свойство как
<local:AQDataGrid local:AQDatagridDependencyProperties.CustomDataSource="something" >
и связать его с помощью выражения типа
Tag="{Binding Path=(local:AQDatagridDependencyProperties.CustomDataSource),
RelativeSource={RelativeSource AncestorType=UserControl}}"
Как примечание, вы обычно объявляете свойство как обычное свойство зависимости в классе AQDataGrid.