Ordem em passos de inicialização caos de controle

Eu gostaria de saber quando é realmente o que acontece dentro do processo de iniciação de controles quando inicio um aplicativo WPF?

Quando a DP é iniciada? Quando vinculativo? Quando o DataContext é definido? O DataContext é avaialbe no construtor de um controle? Existe algum tipo de ordem?

Eu percebi que corri para uma armadilha que uma vez que eu definir um valor em getter / setter de um construtor DP dentro de um controle o valor de DP é atualizado, mas imediatamente também os valores são revertidos para o valor padrão que foi nulo.

Então, meu palpite é que os contrutores obtenham as propriedades de dependência primeiro e depois as iniciadas.

Alguém pode me ajudar com isso?

Edit: Apenas para Rachel. O dp recebe o valor 234 e o retorno da informação volta para nulo. Eu acho que é porque o construtor é chamado primeiro e, em seguida, subsequentemente, a inicialização do dps acontece, o que configura o dp de volta para null, porque null é o valor padrão. Estou pensando errado sobre isso? Qual é a ordem das etapas de inicialização de um objeto de controle ou dependência.

class MySuperDuperCoolClass : ContentControl
{
  public MySuperDuperCoolClass()
  {
    InitalizeComponents();
    this.MySuperDuperProperty = "234";
  }

  public string MySuperDuperProperty
  {
    get { return (string)GetValue(MySuperDuperPropertyProperty);}
    set { SetValue(MySuperDuperPropertyProperty, value);}
  }

  public static DependencyProperty MySuperDuperPropertyProperty =
    DependencyProperty.Register("MySuperDuperProperty", typeof(string), typeof(MySuperDuperCoolClass), 
    new PropertyMetadata(null));

}

questionAnswers(2)

yourAnswerToTheQuestion