我在框架 frame
中有一个页面 page
,frame.DataContext = "foo"
。
(page.Parent as Frame).DataContext
是"foo"
。 好的page.DataContext
的 BindingExpression 为null
(也强制使用 ClearValue)。 好的page.DataContext
为null
。 但我期待“foo”!
为什么不继承DataContext?据我understand Frame 沙盒 内容。但是我找不到任何关于此行为的文档 - 谁能指出我提到的地方?
最佳答案
您没有特别询问如何您可以使它工作,只是为什么默认情况下它不工作。但是,如果您确实希望您的页面继承框架的 DataContext,您可以这样做:
在 XAML 中:
<Frame Name="frame"
LoadCompleted="frame_LoadCompleted"
DataContextChanged="frame_DataContextChanged"/>
在代码隐藏中:
private void frame_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
UpdateFrameDataContext(sender, e);
}
private void frame_LoadCompleted(object sender, NavigationEventArgs e)
{
UpdateFrameDataContext(sender, e);
}
private void UpdateFrameDataContext(object sender, NavigationEventArgs e)
{
var content = frame.Content as FrameworkElement;
if (content == null)
return;
content.DataContext = frame.DataContext;
}
关于c# - page.DataContext 不是从父 Frame 继承的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621424/