Prism:在父ViewModel中共享ViewModel的属性

时间:2011-09-01 18:49:51

标签: wpf mvvm prism prism-4

我正在使用Unity容器开发WPF Prism应用程序。问题是:我有ListBox,每个元素都有自己的ViewModel。在该元素中,我需要从位置列表中选择一个位置。所有元素的位置列表都相同。我如何在父ViewModel中共享此列表?

在互联网上,我用谷歌搜索我可能:

  1. 使用RegionContext。但 它不是正确的方式(RegionContext只能提供一个对象,但我不仅有位置)。

  2. 使用SharedService。但是,根据我的观点,这种方式更合适 用于实时数据更改。

  3. 有没有正确的方法?最佳实践

2 个答案:

答案 0 :(得分:1)

如果您的列表总是相同,我通常使用静态类

public static class Lists
{
    public static List<Location> Locations {get; set;}

    static Lists()
    {
        Lists = DAL.GetLocations();
    }
}

然后在我的XAML

<ListBox ItemsSource="{Binding Source={x:Static local:Lists.Locations}}"
         SelectedItem="{Binding CurrentLocation}" />

答案 1 :(得分:0)

除了Rachels解决方案,您还可以为列表创建新的视图模型,并将此视图模型的实例插入到IoC容器中。通过容器解析此列表视图模型的每个视图模型都将获得对此单个实例的引用。