我有一个包含用户控件的页面,页面的数据上下文被绑定,包含的用户控件也是如此。当页面显示时,我可以看到页面中的用户控件正在显示元素的值,如标题和描述,但是,在同一用户控件的代码隐藏中,数据上下文是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);
}
}
答案 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);
}
}