Ваше описание точно так, как оно реализовано для готовых свойств WPF, таких как FontFamily.FontFamily объявляется как присоединенное свойство в TextElement class ...
public abstract class TextElement : FrameworkContentElement, IAddChild
{
…
/// <summary>
/// DependencyProperty for <see cref="FontFamily" /> property.
/// </summary>
[CommonDependencyProperty]
public static readonly DependencyProperty FontFamilyProperty =
DependencyProperty.RegisterAttached(
"FontFamily",
typeof(FontFamily),
typeof(TextElement),
new FrameworkPropertyMetadata(
SystemFonts.MessageFontFamily,
FrameworkPropertyMetadataOptions.AffectsMeasure |
FrameworkPropertyMetadataOptions.AffectsRender |
FrameworkPropertyMetadataOptions.Inherits),
new ValidateValueCallback(IsValidFontFamily));
..., а затем в Control class он добавляется каквладелец ...
public class Control : FrameworkElement
{
…
/// <summary>
/// The DependencyProperty for the FontFamily property.
/// Flags: Can be used in style rules
/// Default Value: System Dialog Font
/// </summary>
[CommonDependencyProperty]
public static readonly DependencyProperty FontFamilyProperty =
TextElement.FontFamilyProperty.AddOwner(
typeof(Control),
new FrameworkPropertyMetadata(SystemFonts.MessageFontFamily,
FrameworkPropertyMetadataOptions.Inherits));
Вы должны сделать то же самое, что и программисты WPF.