2016-04-06 7 views
1

Frage ist ähnlich wie this question - nur nicht für mich aus pangebundenen Kontext in Benutzercode Kontrollen hinter

Wie greife ich auf ein Grundstück auf einem WPF-Usercontrol über XAML Parent gebunden in, von den Kontrollen Code hinterher?

PS: Andere Steuerelemente, die an Eigenschaften des übergebenen TowerBase-Modells gebunden sind, sind verbindlich. (Ich kann einfach nicht auf das Modell zugreifen, das im nachfolgenden Code eingegeben wurde).

Usercontrol: x und y null und ich kann, warum

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; 
    } 
    ... 

Von den Eltern XAML nicht herausfinden:

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

Eltern Modell:

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

Antwort

3

Das ist, weil UserControl'sDataContext nicht zu der Zeit festgelegt wurde, die es in Konstruktor ist. Hören Sie Loaded Ereignis der Benutzersteuerung und in Handler erhalten Sie die DataContext

<UserControl Loaded="UserControl_Loaded"> 

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