Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 18.07.2015
Сообщений: 3
1

Динамически подгружать UserControls в зависимости от поля Type во ViewModel

14.09.2015, 18:44. Показов 1284. Ответов 3
Метки нет (Все метки)

День добрый!

Прошу помощи. Есть несколько UserControls:

forms:UserControl1
forms:UserControl2
forms:UserControl3

Возможно ли в DataTemplate подгружать один из этих UserControls, в зависимости от поля Type во ViewModel? И, если возможно, то как это сделать.

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<telerik:RadTabControl Name="CalcEditorTabs"
                                       SelectedItem="{Binding CalculationsViewModel.Selected, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
                                       ItemsSource="{Binding CalculationsViewModel.Calculations}">
                    <telerik:RadTabControl.ItemTemplate>
                        <DataTemplate>
                            <Grid Width="200">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="9*" />
                                    <ColumnDefinition Width="1*" />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="20"/>
                                </Grid.RowDefinitions>
                                <ContentControl Grid.Column="0" Grid.Row="0" Content="{Binding ToolName}"/>
                                <telerik:RadRibbonButton 
                            Command="{Binding Remove}" 
                        Grid.Column="1" Grid.Row="0" Margin="3"
                        HorizontalAlignment="Center" VerticalAlignment="Center" SmallImage="/Images/RibbonView/FirstLook/exit.png"
                        Padding="0" />
                            </Grid>
                        </DataTemplate>
                    </telerik:RadTabControl.ItemTemplate>
                    <telerik:RadTabControl.ContentTemplate>
                        <DataTemplate>
                            <forms:UserControl1/>
                        </DataTemplate>
                    </telerik:RadTabControl.ContentTemplate>
                </telerik:RadTabControl>
Буду благодарен за помощь.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2015, 18:44
Ответы с готовыми решениями:

Все UserControls комрилируются в эту DLL? И можно не передавать source of UserControls?
У меня вопрос и не могу найти ответ. Компиляция в VS.NET. В bin директории компилируется файл...

Как динамически подгружать и скрывать какие-то элементы интерфейса
При работе с IDE необходимо динамически подгружать и скрывать какие-то элементы интерфейса, нужно...

UserControls из других UserControls
Добрый день. Вопрос на засыпку, а составлять UserControls из других UserControls это хорошая...

Как из ViewModel UserControl'a изменить свойство в ViewModel главного окна?
Недавно начал попытки создавать приложение WPF с применением MVVM, и у меня возник вопрос, который...

3
Жуткая тВарЬ
388 / 324 / 134
Регистрация: 06.02.2015
Сообщений: 960
Записей в блоге: 1
14.09.2015, 19:48 2
Попробуйте так, хотя я не уверен +)) нет подопытного кода для тестов


XML
1
2
3
4
5
6
7
8
<DataTemplate DataType="{x:Type local:MyClassViewModel}">
            <views:MyView/>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding PropertyA}">
                    <Setter Property="Content" Value="{x:Null}"/>
                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
Добавлено через 4 минуты
Цитата Сообщение от NikitaZhdanov Посмотреть сообщение
Возможно ли в DataTemplate подгружать один из этих UserControls, в зависимости от поля Type во ViewModel?
Но так на вскидку - это не правильный подход! Зачем поле с типом если дататемплейты как раз с ним и работают
0
burning1ife
1450 / 1272 / 293
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
15.09.2015, 01:59 3
Лучший ответ Сообщение было отмечено NikitaZhdanov как решение

Решение

Попробуйте DynamicDataTemplateSelector
http://www.codeproject.com/Art... teSelector

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<local:DynamicTemplateSelector x:Key="MyTemplateSelector" />
 
<DataTemplate x:Key="StringTemplate">
    <TextBlock>
        <Run Text="String: " />
        <Run Text="{Binding}" />
    </TextBlock>
</DataTemplate>
 
<DataTemplate x:Key="Int32Template">
    <TextBlock>
        <Run Text="Int32: " />
        <Run Text="{Binding}" />
    </TextBlock>
</DataTemplate>
 
<Style x:Key="MyListStyle" TargetType="ListView">
    <Setter Property="ItemTemplateSelector" Value="{StaticResource MyTemplateSelector}"/>
    <Setter Property="local:DynamicTemplateSelector.Templates">
        <Setter.Value>
            <local:Templates>
                <local:Template Value={x:Type String} DataTemplate={StaticResource StringTemplate}/>
                <local:Template Value={x:Type Int32} DataTemplate={StaticResource Int32Template}/>
            </local:Templates>
        </Setter.Value>
    </Setter>
</Style>
1
0 / 0 / 0
Регистрация: 18.07.2015
Сообщений: 3
16.09.2015, 17:56  [ТС] 4
Цитата Сообщение от kenny69 Посмотреть сообщение
Попробуйте DynamicDataTemplateSelector
http://www.codeproject.com/Art... teSelector
Там в комментариях оказалась ссылка на более Friendly вариант:
http://www.codeproject.com/Tip... -switching
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2015, 17:56

WPF получить доступ из одной viewmodel к другой viewmodel
Собственно есть у меня две viewmodel, mainviewmodel и settingsviewmodel, в mainviewmodel есть вот...

Как реализовать автозаполнение поля в DbGrid в зависимости от значения другого поля
Добрый день. Не могу разобраться в автозаполнением поля в gdgride. Суть проблемы, имеется у меня...

Обработка поля таблицы в зависимости от другого поля
Подскажите, плз, как лучше организовать изменения поля (в моем случае изменить логическое поле...

Отображение поля в зависимости от значения другого поля
Уважаемые знатоки, имею такую ситуацию поле №1 имеет выбор по выпадающему списку из двух...

Изменение значений поля в зависимости от другого поля
Всем привет! Очень давно не работала в аксе, все забыла, вопрос легкий, но чет не получается...

Как задать значение input radio type динамически?
Есть представление @foreach (var p in Model) &lt;td &gt;&lt;input type=&quot;radio&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru