Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шаблон для ListBoxItem 
:(
    Опции темы
hexzo
Дата 8.8.2011, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Я пробую применить шаблон элементов для списка. Для элементов некоторых типов шаблон не применяется.
Код

<ListBox>           
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Button>Zzz</Button>
                </DataTemplate>
            </ListBox.ItemTemplate>

            <ListBoxItem>yellow tree</ListBoxItem>
            <ListBoxItem>green tree</ListBoxItem>
            <ListBoxItem>purple tree</ListBoxItem>
            <ListBoxItem>red tree</ListBoxItem>
            <ListBoxItem>blue tree</ListBoxItem>
            <src:Custom></src:Custom>
            <TextBlock></TextBlock>
 </ListBox>


Если судить по тексту ошибки.
System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='ListBoxItem'
Шаблон игнорируется для типов которые уже являются контейнерами для ItemsControl, если я правильно понял.

Для типов определённых пользователем шаблон работает.
Вопрос в том как применить шаблон для элементов ListBoxItem?

Это сообщение отредактировал(а) hexzo - 8.8.2011, 10:47
PM MAIL   Вверх
Gvozdin
Дата 9.8.2011, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



Можно унаследоваться от ListBox и переопределить IsItemItsOwnContainerOverride() { return false } и использовать свой контрол вместо ListBox.

Или же вместо дата темплэйта использовать шаблон, ListBox.ItemTemplate при этом задавать не надо:
Код

            <ListBox.ItemContainerStyle>
                <Style TargetType="{x:Type ListBoxItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <Button>Zzz</Button>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.ItemContainerStyle>

--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
hexzo
Дата 10.8.2011, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Gvozdin
Цитата
ListBox.ItemContainerStyle

Вот это мне больше нравится.

И ещё я не понял одного момента.
У меня в примере срабатывает шаблон данных для контрола TextBlock. А как он срабатывает если у класса TextBlock нет свойства для шаблона?  smile 
PM MAIL   Вверх
Gvozdin
Дата 10.8.2011, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



Это никак не связано, DataTemplate попадает в ContentControl и он его уже отображает.
TextBlock рассматривается в этом случае просто как любой object, оборачивается в ListBoxItem и там уже отображается шаблон
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
hexzo
Дата 10.8.2011, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Gvozdin
Цитата

TextBlock рассматривается в этом случае просто как любой object, оборачивается в ListBoxItem и там уже отображается шаблон 

Вот это
Код

<ListBox>           
    <TextBlock></TextBlock>
 </ListBox>


По сути значит вот это?
Код

<ListBox>           
  <ListBoxItem>
    <TextBlock></TextBlock>
  </ListBoxItem>
</ListBox>


Но почему тогда шаблон не срабатывает для
Код

<ListBoxItem>
    unclear
</ListBoxItem>



PM MAIL   Вверх
Gvozdin
Дата 11.8.2011, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 172
Регистрация: 9.8.2011
Где: Москва

Репутация: 8
Всего: 8



Что происходит, DataTemplate служит для задания шаблона ДАННЫХ. Все что не ListBoxItem - это данные и к ним применяется шаблон.
А к ListBoxItem не применяется, даже не смотря на то что потом все оборачивается в ListBoxItem smile

Как это все проиходит точно - надо уже разбираться smile
--------------------
http://gvozdin.ru
PM MAIL WWW   Вверх
hexzo
Дата 11.8.2011, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Gvozdin
Цитата

Как это все проиходит точно - надо уже разбираться  

Не-не-не, не надо.  smile 
Ладно, я просто думал что там всё интуитивно понятно и логично.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0921 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.