2016-04-06 35 views
1

問題的用戶控件代碼結合上下文很像this question - 只是沒有成功,我訪問背後

那麼,如何訪問通過家長的XAML中綁定一個WPF用戶控件的屬性,從控制代碼後面?

PS:綁定到傳入的TowerBase模型的屬性的其他控件是綁定的。 (我只是無法訪問在後面的代碼中傳入的模型)。

用戶控件: 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; } 
    ... 

回答

3

這是因爲UserControl'sDataContext在構造函數中不會被設置。收聽Loaded用戶控制事件,您將在處理程序中獲得DataContext

<UserControl Loaded="UserControl_Loaded"> 

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