Значения перечисления MVVM: множество свойств прокси - PullRequest
0 голосов
/ 16 января 2012

Я пишу библиотеку ViewModel, которая работает с моими пользовательскими элементами управления WPF.Моя проблема в том, что моя DomainModel имеет большое количество типов данных: Cd, ручки, гаджеты, книги, ecc.Все эти типы данных перечисляются с перечислением (у меня есть более или менее 100 типов данных), и каждый тип данных соответствует таблице БД.

Таким образом, идея состоит в том, чтобы иметь библиотеку ViewModel, которая предоставляет одно свойство длякаждый тип данных, таким образом, мои элементы управления пользовательским интерфейсом могут напрямую связывать свойства моего viewModel.ViewModel для каждого свойства возвращает ObservableCollection.Например, если я хочу, чтобы мое поле со списком было заполнено данными "Гаджеты", в моем XAML у меня будет что-то вроде:

<my:XCombo ItemsSource="{Binding Gadgets}" .... />

, а в моей ViewModel у меня будет:

public ObservableCollection<Gadgets> Gadgets
{
    get 
    {
        //get gadgets data from my domain model
        return _model.GetData(DataEnum.Gadgets);
    }
}

Теперь, чтобы сделать это, мне нужно, чтобы в моем ViewModel было по одному свойству для каждого значения перечисления, но я хотел бы избежать установки 100 методов доступа к свойствам.Я ленивый, и это может быть очень подвержено ошибкам.Я знаю, что в c # 4 у нас есть динамические свойства, поэтому таким образом я могу избежать написания 100 методов доступа к свойствам, но я ДОЛЖЕН использовать .net 3.5, который не имеет динамических свойств, я не могу использовать .net 4; (

Есть ли кто-нибудь, кто уже имел эту проблему или какие-либо предложения?

Заранее большое спасибо.

1 Ответ

2 голосов
/ 16 января 2012

Вы можете попробовать использовать свойство индексатора, которое возвращает соответствующие данные

public IList this[DataEnum type]
{
     return _model.GetData(type);
}

Затем свяжите это, используя:

ItemsSource="{Binding [Gadgets]}"
...