Представление, содержащее другой относительный вид - PullRequest
0 голосов
/ 20 января 2012

Я хочу построить представление, которое будет содержать внедренное представление в регион (оба будут иметь свои собственные ViewModels).

Первое представление будет содержать некоторые элементы управления действиями (новый, сохранить, удалить, загрузитькнопки), которые будут «выполняться» над вторым представлением, которое будет содержать некоторые элементы управления полями (текстовые поля для ввода данных пользователем).

Первое представление (и его модель представления) не может иметь реальный (окончательный) тип представления, котороев это, потому что этот тип может варьироваться (например: поля клиента, поля продуктов, поля пользователя).

Вопрос: как я могу достичь этого, используя MVVM правильным способом?

1 Ответ

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

Если я правильно понял ваш вопрос, у вас есть представление, содержащее универсальный объект, и вы хотите другой шаблон, основанный на том, что представляет собой универсальный объект.

Если это так, используйте ContentControl и DataTemplates

<ContentControl Content="{Binding SomeGenericObject}">
    <ContentControl.Resources>
        <DataTemplate DataType="{x:Type local:CustomerViewModel}">
            <local:CustomerView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:ProductViewModel}">
            <local:ProductView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:OrderViewModel}">
            <local:OrderView />
        </DataTemplate>
    </ContentControl.Resources>
</ContentControl>

Что касается обработки общих операций CRUD в ViewModel, см. мой ответ на ваш другой вопрос об использовании универсального интерфейса.

...