Как правильно указать привязку к DependencyProperty

У меня возникла необходимость помещать экземпляр класса модели в UserControl через привязку:

<ctrl:ProjectControl Project="{Binding}" />
public partial class Project
{
    public Project() { }

    public int Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
}

Сделал это следующим образом:

public partial class ProjectControl : UserControl
{
    public static readonly DependencyProperty ProjectDependencyProperty = DependencyProperty.Register(
        name: "Project",
        propertyType: typeof(Project),
        ownerType: typeof(ProjectControl),
        typeMetadata: new PropertyMetadata(new Project(), new PropertyChangedCallback(ChangeProjectProperty)));

    public ProjectControl()
    {
        InitializeComponent();
        DataContext = this;
    }

    public Project Project
    {
        get => GetValue(ProjectDependencyProperty) as Project;
        set
        {
            SetValue(ProjectDependencyProperty, value);
        }
    }

    private static void ChangeProjectProperty(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        (d as ProjectControl).Project = e.NewValue as Project;
    }
}

Но на этом этапе возник вопрос: а как отобразить эти данные на view? Пытался сделать через привязку к Project, но безуспешно:

<TextBlock Text="{Binding Project.Title}" />
<TextBlock Text="{Binding Project.Description}" />

Далее пробовал убирать DataContext = this из конструктора ProjectControl, после этого ChangeProjectProperty начал срабатывать каждый раз при создании контрола (до этого не вызывался).


Ответы (0 шт):