【问题标题】:View not displaying in Region视图未在区域中显示
【发布时间】:2011-10-21 08:26:52
【问题描述】:

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

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

这是问题所在:在 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 从不显示在该区域中。

【问题讨论】:

    标签: c# .net mvvm c#-3.0 prism


    【解决方案1】:

    第一:

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

    假设你已经这样做了:

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

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

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

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

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

    查看view/viewmodel 的分辨率,有一个更简单的方法:

    SomeView 在其构造函数中使用SomeViewModel 参数,然后将其绑定到DataContext。 Unity 会看到SomeView 有一个依赖并自动解决它...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 2015-05-06
      • 2018-02-12
      相关资源
      最近更新 更多