gpt4 book ai didi

wpf - 框架导航 - DataContext 未继承

转载 作者:行者123 更新时间:2023-12-04 20:02:52 25 4
gpt4 key购买 nike

我有一个代表 WPF 应用程序主窗口的 XAML 文件。现在我希望此窗口显示由另一个 XAML 文件指定的内容。这有效,但是 DataContext在我的 UserControl 的 C# 代码中丢失了.

我认为 <Frame Source=....>以某种方式破坏了 WPF 的逻辑树。我想要与 <Frame Source=....> 相同的行为被 Content1.xaml 文件内容简单替换,即 DataContext周边的Window类继承到UserControl .

有没有简单的方法可以解决这个问题?全部solutions我发现这似乎有点矫枉过正。

伪代码

MainWindow.xaml

<Window ....>
<Frame Source="Content1.xaml" />
</Window>

Content1.xaml

<UserControl ....>
<!-- Content goes here -->
</UserControl>

最佳答案

Joe White 的解决方案 here解决问题。

引用他的回答:

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

关于wpf - 框架导航 - DataContext 未继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com