数据上下文后面的代码为空,即使其值显示在页面上 - Windows Phone 8.1

时间:2015-04-16 15:54:39

标签: c# xaml windows-phone-8.1

我有一个包含用户控件的页面,页面的数据上下文被绑定,包含的用户控件也是如此。当页面显示时,我可以看到页面中的用户控件正在显示元素的值,如标题和描述,但是,在同一用户控件的代码隐藏中,数据上下文是null ..我做错了什么?

我需要数据上下文,因此我可以在控件中编辑它的值或更改页面中的其他UI元素。我在这里做错了什么?

我的页面:

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
DataContext="{Binding}"

使用该页面的用户控件:

<Grid Grid.Row="1" x:Name="ContentRoot" Margin="19,9.5,19,0">
       <local:ucFooControl DataContext="{Binding}"/>
</Grid>

然后,我在User Control Code Behind中看到null,即使显示元素显示绑定项目。

public ucFooControl()
{
    this.InitializeComponent();

    if (this.DataContext != null)
    {
        bar= (Bar)DataContext;
        this.DoSomething((bar);
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

        public MyUserControl1()
        {
            this.InitializeComponent();
            DataContextChanged += OnDataContextChanged;
        }

        private void OnDataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
        {
            if (this.DataContext != null)
            {
               bar = (Bar)DataContext;
               this.DoSomething((bar);
            }
        }