2011-09-01 115 views
1

我正在开发使用Unity容器的WPF Prism应用程序。问题是:我有一个ListBox,每个元素都有它自己的ViewModel。在那个元素中,我需要从位置列表中选择一个位置。所有元素的位置列表都是相同的。我怎么能在父视图模型中共享这个列表?Prism:在ViewModel中共享ViewModel的属性

在互联网上我一派,我可能:

  1. 使用RegionContext。但 这是不正确的方式(RegionContext可以只服务于一个对象,但我不仅有位置)。使用SharedService。但是,按我的意见,这种方式更适合于实时数据更改 。

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

回答

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}" /> 
+0

接受你的答案,但因为我不喜欢静态类/属性我使用共享服务。 –

0

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