1

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

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

  1. 使用RegionContext. 但这不是正确的方法(RegionContext只能服务一个对象,但我不仅有位置)。

  2. 使用SharedService. 但是,在我看来,这种方式更适合实时数据变化。

有正确的方法吗?最佳实践

4

2 回答 2

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}" />
于 2011-09-01T19:08:06.767 回答
0

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

于 2011-09-05T08:51:45.287 回答