Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Несколько типизированных шаблонов данных для одной модели представления? / 4 сообщений из 4, страница 1 из 1
28.06.2012, 15:26
    #37858958
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько типизированных шаблонов данных для одной модели представления?
Есть модель представления (VM). Для неё обычно делают типизированный шаблон данных, чтобы использовать его в представлении:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:vm="clr-namespace:Project.ViewModel"
                    xmlns:v="clr-namespace:Project.View">

    <DataTemplate DataType="{x:Type vm:MyVM}">
        <v:MyView />
    </DataTemplate>

</ResourceDictionary>



А если я хочу на одну модель представления несколько представлений с разными шаблонами, соответственно, то что делать?

Неужели надо новый класс модели представления наследовать от той модели представления, для которой хочешь несколько представлений, и тогда уже для каждого такого класса делать представление со своим типизированным шаблоном данных?
...
Рейтинг: 0 / 0
28.06.2012, 15:33
    #37858967
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько типизированных шаблонов данных для одной модели представления?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:vm="clr-namespace:Project.ViewModel"
                    xmlns:v="clr-namespace:Project.View">

    <DataTemplate x:Key="Template1" DataType="{x:Type vm:MyVM}">
        <v:MyView1/>
    </DataTemplate>

    <DataTemplate x:Key="Template2" DataType="{x:Type vm:MyVM}">
        <v:MyView2/>
    </DataTemplate>

</ResourceDictionary>


?
...
Рейтинг: 0 / 0
28.06.2012, 15:56
    #37859013
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько типизированных шаблонов данных для одной модели представления?
Алексей К
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:vm="clr-namespace:Project.ViewModel"
                    xmlns:v="clr-namespace:Project.View">

    <DataTemplate x:Key="Template1" DataType="{x:Type vm:MyVM}">
        <v:MyView1/>
    </DataTemplate>

    <DataTemplate x:Key="Template2" DataType="{x:Type vm:MyVM}">
        <v:MyView2/>
    </DataTemplate>

</ResourceDictionary>


?
А как теперь выбрать это шаблон? Штука в том, что в моём варианте "система ресурсов сама ищет и выбирает шаблон по типу данных", который (тип) я пытаюсь отобразить.

Вот полный код моего варианта тогда уж:

1. Где нибудь пишу код

listBox.Items.Add(new MyVM());

2. Система ресурсов идет в ресурсах шаблон данных, назначенный на тип MyVM и находит

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<ResourceDictionary
                    xmlns:vm="clr-namespace:Project.ViewModel"
                    xmlns:v="clr-namespace:Project.View">

    <DataTemplate DataType="{x:Type vm:MyVM}">
        <v:MyView />
    </DataTemplate>

</ResourceDictionary>



3. В шаблоне данных визуализируется юзер контрол MyView:

Код: xml
1.
2.
<UserControl x:Class="Project.View.MyView">
</UserControl>




При этом я не устанавливаю явно каких-то дата контекстов.

А теперь я хочу сделать что-то типа

listBox.Items.Add(new MyVM());
listBox.Items.Add(new MyVM());

но чтобы каждый MyVM был представлен своим View (юзер контролом или ещё каким контейнером - неважно) и, соответственно, своим шаблоном данных.

Надо усложнять код и для каждого нового объекта MyVM устанавливать свой дата контекст? При этом как-то явно указывать названия представлений (юзер контролов), которые дложны использоваться? Если да, то как это в коде написать? Если нет, то как вообще поступить в такой ситуации?
...
Рейтинг: 0 / 0
28.06.2012, 16:04
    #37859034
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несколько типизированных шаблонов данных для одной модели представления?
Чудес не бывает. Или автоматически выбирается дефолтный для типа вьюмодели шаблон, или, если шаблонов несколько, нужно указывать его явно.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Несколько типизированных шаблонов данных для одной модели представления? / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]