Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Можно ли как то использовать DataTemplate по умолчанию для ItemsControl / 7 сообщений из 7, страница 1 из 1
06.05.2011, 01:30
    #37248642
Grizzly284
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то использовать DataTemplate по умолчанию для ItemsControl
Всем доброго времени суток!

У меня возникла следующая ситуация. Существует два разных TreeView каждый из которых отображает элементы разнообразных типов данных, некоторые типы могут отображаться как в первом, так и во втором TreeView. DataTemplate, используемые для одного и того же типа заведомо разные, и не будут применятся совместно в одном и том же TreeView.
Можно ли как то указать какие DataTemplate для какого TreeView будут применятся по умолчанию без, использования DataTemplateSelector?
...
Рейтинг: 0 / 0
06.05.2011, 13:17
    #37249520
Руки-крюки
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то использовать DataTemplate по умолчанию для ItemsControl
Grizzly284,
Очень просто и эффективный способ:
В ресурсах, доступных итем контролу, обьявляем:
Код: plaintext
1.
2.
3.
4.
5.
6.
  <DataTemplate DataType="{x:Type vm:AllCustomersViewModel}">
    <vw:AllCustomersView />
  </DataTemplate>

  <DataTemplate DataType="{x:Type vm:CustomerViewModel}">
    <vw:CustomerView />
  </DataTemplate>

Как работает: всякий раз как контент презентер (в том числе и контент презентер итем контрола) будет получать в Content - AllCustomersViewModel, он будет добавлять в дерево AllCustomersView, и подставлять в дата контекст этой вьюхи - вью модель, тобишь AllCustomersViewModel.
...
Рейтинг: 0 / 0
08.05.2011, 20:20
    #37251434
Grizzly284
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то использовать DataTemplate по умолчанию для ItemsControl
Руки-крюки,

Прошу прощения за задержку с ответом, так уж вышло.
Я тоже думал что можно указать DataTemplate в шаблоне но у меня так не получается. Единственое можно так это добавить ItemTemplate (но только один), а это совсем не то что нужно. Я набросал простенький пример :


Код: plaintext
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:lc="clr-namespace:WpfApplication1"
        Title="DataTemplate" Height="350" Width="525" SizeToContent="WidthAndHeight" WindowStartupLocation="CenterScreen">
	<Window.Resources>
		
		<!--Шаблоны даных для первого ItemsTemplate-->
		<HierarchicalDataTemplate DataType="{x:Type lc:Person}" x:Key="personTemplate1">
			<Border BorderThickness="3" BorderBrush="Blue"
					  Margin="3">
				<TextBlock Text="{Binding Name}"/>
			</Border>
		</HierarchicalDataTemplate>
		
		<HierarchicalDataTemplate DataType="{x:Type lc:Car}" x:Key="carTemplate1">
			<Border BorderThickness="3" BorderBrush="Red"
					  Margin="3">
				<TextBlock Text="{Binding Model}"/>
			</Border>
		</HierarchicalDataTemplate>
		
		<HierarchicalDataTemplate DataType="{x:Type lc:Material}"  x:Key="materialTemplate1">
			<Border BorderThickness="3" BorderBrush="LimeGreen"
					  Margin="3">
				<TextBlock Text="{Binding Title}"/>
			</Border>
		</HierarchicalDataTemplate>

		
		<!--Шаблоны даных для второго ItemsTemplate-->
		<HierarchicalDataTemplate DataType="{x:Type lc:Car}" >				<!--x:Key="carTemplate2"-->
			<Border BorderThickness="1" BorderBrush="Red" CornerRadius="5"
					  Margin="3" Padding="3">
				<TextBlock Text="{Binding Model}"/>
			</Border>
		</HierarchicalDataTemplate>
		
		<HierarchicalDataTemplate DataType="{x:Type lc:Person}" >			<!--x:Key="personTemplate2"-->
			<Border BorderThickness="1" BorderBrush="Blue" CornerRadius="5"
					  Margin="3" Padding="3">
				<TextBlock Text="{Binding Name}"/>
			</Border>
		</HierarchicalDataTemplate>
		
		<HierarchicalDataTemplate DataType="{x:Type lc:Material}" >			<!--x:Key="materialTemplate2"-->
			<Border BorderThickness="1" BorderBrush="LimeGreen" CornerRadius="5"
					  Margin="3" Padding="3">
				<TextBlock Text="{Binding Title}"/>
			</Border>
		</HierarchicalDataTemplate>
	</Window.Resources>
	
	
	
	
	
	<StackPanel Orientation="Horizontal">
		<TreeView Name="PART_TreeViev01"
					 Margin="5"
					 Background="LightSteelBlue"
					 MinHeight="100"
					 >			
		</TreeView>		
		<TreeView Name="PART_TreeViev02"
					 Margin="5"
					 Background="LightPink"
					 MinHeight="100">			
		</TreeView>
	</StackPanel>
</Window>

Если вам не сложно укажите как тут нужно поступить.

Файл с решением для VS2010 прилагаелся к сообщению
...
Рейтинг: 0 / 0
08.05.2011, 20:24
    #37251436
Grizzly284
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то использовать DataTemplate по умолчанию для ItemsControl
Извините прикрепить само решение у меня не пролучилось.
...
Рейтинг: 0 / 0
11.05.2011, 01:35
    #37254005
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то использовать DataTemplate по умолчанию для ItemsControl
Grizzly284Можно ли как то указать какие DataTemplate для какого TreeView будут применятся по умолчанию без, использования DataTemplateSelector?

Нет.
...
Рейтинг: 0 / 0
11.05.2011, 07:54
    #37254097
i
i
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то использовать DataTemplate по умолчанию для ItemsControl
Complex Hierarchical Data Templates . Похоже, из твое серии
...
Рейтинг: 0 / 0
13.05.2011, 19:53
    #37260043
Grizzly284
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли как то использовать DataTemplate по умолчанию для ItemsControl
i,

Да, спасибо я пользовался похожим подходом ( Organizing Heterogeneous Data on a WPF TreeView ).
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Можно ли как то использовать DataTemplate по умолчанию для ItemsControl / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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