访问用户控件背后的绑定上下文

时间:2016-04-06 06:34:18

标签: wpf binding user-controls code-behind custom-object

问题很像this question - 只是没有为我做好准备

那么如何通过后面的控制代码访问通过Parent的Xaml绑定的WPF用户控件上的属性?

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

1 个答案:

答案 0 :(得分:3)

这是因为UserControl's DataContext在构造函数中不会被设置。收听用户控制的Loaded事件,在处理程序中,您将获得DataContext

<UserControl Loaded="UserControl_Loaded">

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