gpt4 book ai didi

c# - View 未在区域中显示

转载 作者:行者123 更新时间:2023-12-03 10:50:11 25 4
gpt4 key购买 nike

对于以下场景,我有两个问题:为什么最初没有将区域添加到区域集合中?

为什么 View 没有显示在该区域中......或者我该如何解决它?

这是问题所在:在 WPF 的 Prism 中,我有一个像弹出窗口一样的窗口。此窗口有一个使用区域属性的用户控件。由于某种原因,此窗口的区域未出现在区域集合中。

为了让窗口的区域进入区域集合,我通过代码完成了。在触发此窗口出现的模块中,我执行以下操作:

IRegion region = new SingleActiveRegion();
myRegionManager.Regions.Add("MainWindowRegion", region);
myContainer.Resolve<someViewModel>().Initialize();
SomeView someView = myContainer.Resolve<SomeView>();
SomeViewModel someViewModel = myContainer.Resolve<SomeViewModel>();
someView.DataContext = someViewModel;
myRegionManager.Regions["MainWindowRegion"].add(someView, "SomeView");

该区域现在与我的所有其他区域一起出现在区域集合中。但是, someView 从不显示在该区域中。

最佳答案

第一的:

您在哪里将 View 和 View 模型添加到 Unity?您应该将其作为模块初始化的一部分。您的每个 Prism 模块都应该有一个实现 IModule 的类.

假设你已经这样做了:

阅读上面的代码,我看到正在创建一个区域,但您尚未为将要绑定(bind)到该区域的控件添加 Xaml。

例如,我希望在 Shell 中看到以下内容:

<UserControl>
<Grid>
<ItemsControl Margin="0,20,0,0" cal:RegionManager.RegionName="MainWindowRegion" />
</Grid>
</UserControl>

这将创建 MainWindowRegion并将其绑定(bind)到 ItemsControl在页面上。加载此用户控件时,它的区域将注册到 Prism 并添加到默认 RegionManager .

如果您必须手动创建自己的区域,那么它可能未绑定(bind)到控件,因此当您开始向区域添加 View 时,它们不会显示,因为区域未绑定(bind)到控件。

看着 view/viewmodel决议,有一个更简单的方法:

SomeView拍下 SomeViewModel构造函数中的参数,然后将其绑定(bind)到 DataContext那里。 Unity 会看到 SomeView有一个依赖并自动解决它......

关于c# - View 未在区域中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964942/

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