С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
simply_denis
35 / 30 / 2
Регистрация: 31.12.2009
Сообщений: 349
1

Почему не работает ControlTemplate?

11.06.2011, 13:00. Просмотров 893. Ответов 6
Метки нет (Все метки)

C#
1
2
3
((ContentControl)(tabItem.Content)).Content ==    null
 
((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate == null
Хотя этого не должно быть. Вот код где это просиходит, в чем может быть причина.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
   var roomTable = from desks in context.RoomToStandartDesks
             where desks.id_room == room.id
             select desks.Desk;
    
    var tabItem = new TabItem
           {
           DataContext = roomTable,
           Header = headerText,
           };
    if (controlTemplate == null)
     tabItem.Content = (object)roomTable;
    else
     tabItem.Content = new ContentControl { Template = controlTemplate };
    tabItems.Add(tabItem);


xaml ControlTemplate:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<ControlTemplate x:Key="MyTabItemContentTemplate">
    <StackPanel>
     <TextBlock Text="{Binding Path=x}"/>
     <ItemsControl ItemsSource="{Binding DataContext, Converter={StaticResource KeySimplyConvert}}">
         <ItemsControl.ItemsPanel>
         <ItemsPanelTemplate>
             <Canvas Margin="10" Background="AliceBlue"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
         </ItemsPanelTemplate>
         </ItemsControl.ItemsPanel>
         <ItemsControl.ItemTemplate>
         <DataTemplate>
             <Border>
             <Border.RenderTransform>
                 <TranslateTransform X="{Binding x, Mode=TwoWay}" Y="{Binding y, Mode=TwoWay}"/>
             </Border.RenderTransform>
             <Managerer:TablePanel DataContext="{Binding}" />
             </Border>
         </DataTemplate>
         </ItemsControl.ItemTemplate>
     </ItemsControl>
    
    </StackPanel>
    </ControlTemplate>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2011, 13:00
Ответы с готовыми решениями:

Хитрый ControlTemplate
В общем есть такой код: Нарисовано 2 кнопки, с помощью вижуалстейта они...

DataTrigger и ControlTemplate. анимация?
Задача: необходимо сделать анимацию цвета фона прямоугольника зависящую от...

События элементов из ControlTemplate
В общем, есть стиль окна, который также содержит в себе ControlTemplate,...

Обращение к сгенерированному по ControlTemplate элементу WPF
Есть измененный DataGrid, который строится по вот такому ControlTemplate: ...

Style Trigger, ControlTemplate, многострочный TextBox
Создал стиль. При наведении указателя на TextBox в нём появляется иконка. ...

6
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
13.06.2011, 11:13 2
Цитата Сообщение от simply_denis Посмотреть сообщение
Хотя этого не должно быть
чего этого?? и что должно быть?? поконкретней формулируйте вопрос.
0
simply_denis
35 / 30 / 2
Регистрация: 31.12.2009
Сообщений: 349
13.06.2011, 12:30  [ТС] 3
Content и ContentTemplate - равны null но этого не джолжно бытьи по тэому не работает, но вот почему null я понть не могу.
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
13.06.2011, 12:35 4
тут так сложно сказать...
посмотри в режиме отладки, может у тебя
C#
1
2
3
 var roomTable = from desks in context.RoomToStandartDesks
             where desks.id_room == room.id
             select desks.Desk;
возвращет null;

по поводу этой строки
C#
1
 tabItem.Content = (object)roomTable;
чтобы присваивать свойство Content у тебя в ControlTemplate должен быть ContentPresenter
0
simply_denis
35 / 30 / 2
Регистрация: 31.12.2009
Сообщений: 349
13.06.2011, 13:04  [ТС] 5
C#
1
controlTemplate == null
всегда false

запрос возвращает данные проверяю так
C#
1
2
3
4
5
var listDesk = new List<Desk>();
                            foreach (Desk desk in roomTable)
                            {
                                listDesk.Add(desk);
                            }
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
13.06.2011, 13:10 6
чтобы получить Template у tabItem.Content используй
C#
1
tabItem.Content.Template
, а не
C#
1
((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate
0
simply_denis
35 / 30 / 2
Регистрация: 31.12.2009
Сообщений: 349
13.06.2011, 13:29  [ТС] 7
да, значит в чем то другом проблема, сейчас вообще страницаа просто белой становиься и всё.
0
13.06.2011, 13:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2011, 13:29

ControlTemplate и ContentControl: как динамически загрузить шаблон?
В ContentControl в свойство Template устанавливаю ранее созданный шаблон...

Почему не работает биндинг?
Здравствуйте, подскажите пожалуйста в чем проблема привязки? Код бехайнд:...

Почему привязка не работает?
&lt;Window x:Class=&quot;WpfDataBind.MainWindow&quot; ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru