Доступ к привязанному контексту в коде пользовательских элементов управления позади

Вопрос очень похож на этот вопрос - просто не сдвигался для меня

Итак, как мне получить доступ к свойству в пользовательском элементе управления WPF, привязанном через родительский Xaml in, из контрольного кода позади?

PS: другие элементы управления, привязанные к свойствам переданной модели TowerBase, являются обязательными. (Я просто не могу получить доступ к модели, переданной в коде).

UserControl: x и y равны нулю, и я не могу понять, почему

public partial class TowerControl : UserControl
{
    public TowerBase model = new TowerBase(); //Trying to set this model

    public TowerControl()
    {
        InitializeComponent();
        var x = ((TowerBase)this.DataContext); //Or Extract from binding
        var y = model;
    }
    ...

Из родительского xaml:

    ...
    <controls:TowerControl Grid.Row="1" Grid.Column="0" x:Name="Tower" DataContext="{Binding Tower}" />
    ...

Родительская модель:

    ...
    public TowerBase Tower { get; set; }
    ...

person Pakk    schedule 06.04.2016    source источник


Ответы (1)


Это потому, что UserControl's DataContext не будет установлен к тому моменту, когда он находится в конструкторе. Прослушайте Loaded событие пользовательского управления и в обработчике вы получите DataContext

<UserControl Loaded="UserControl_Loaded">

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
    var x = this.DataContext;
}
person Nitin    schedule 06.04.2016