Prism: поделиться свойством ViewModel в родительской ViewModel - PullRequest
1 голос
/ 01 сентября 2011

Я разрабатываю приложение WPF Prism с использованием контейнера Unity.Проблема в том, что у меня есть ListBox, у каждого элемента есть своя ViewModel.В этом элементе мне нужно выбрать местоположение из списка мест.Список локаций одинаков для всех элементов.Как я могу поделиться этим списком в родительской ViewModel?

В интернете я погуглил, что могу:

  1. Использовать RegionContext.Но это не правильный путь (RegionContext может обслуживать только один объект, но у меня есть не только местоположения).

  2. Использовать SharedService.Но, по моему мнению, этот способ больше подходит для изменения данных в реальном времени.

Есть ли правильный путь?Лучшая практика

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Если ваш список всегда будет одинаковым, я обычно использую статический класс

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 голосов
/ 05 сентября 2011

Помимо решения Rachels вы можете создать новую модель представления для списка и вставить экземпляр этой модели представления в свой контейнер IoC. Каждая модель представления, которая разрешает эту модель представления списка через контейнер, затем получает ссылку на этот единственный экземпляр.

...