| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Добавление визуального элемента в listView. |
| Автор: hexzo 24.8.2011, 14:23 |
| Мне нужно быстренько, на небольшой промежуток времени в ListView добавить нетиповой элемент, а потом убрать его оттуда. panelA.Items.Add(new TextBox()); А мне в ответ, что как бы нельзя, используй вместо этого ItemsSource. Operation is not valid while ItemsSource is in use. Access and modify elements with ItemsControl.ItemsSource instead. Цель такова. 1) Список отображает содержимое файловой системы. 2) Когда нужно создать директорию, я добавляю в список textbox куда вводится имя файла. 3) А когда вся нужная от него информация получена, убирается оттуда. Как это осуществить с наименьшим гемороем? |
| Автор: Gvozdin 24.8.2011, 16:13 |
| в стиле MVVM или MVP попробуйте представьте директорию своим классом и если директория будет новой(добавить её в ItemsSource вместе с настоящими директриями), то для неё отдельный шаблон с текст боксом c возможностью ввода названия |
| Автор: hexzo 24.8.2011, 19:04 | ||||||||
Gvozdin
Примерно так и есть.
Как вариант я могу в классе для файла завести флажок в зависимости от которого триггер данных в стиле для элемента будет включать соответствующий шаблон. Но я не въехал в один момент. Куда мне пихать шаблон? Я могу указать шаблон для элемента в свойстве ItemTemplate класса ListView.
Но если у меня использовано свойство View в котором у меня определены колонки, то свойство ItemTemplate работать перестаёт.
В классе GridView я вижу свойство GridViewItemContainerStyleKey. Но оно почему то статическое. А в документации в его описании даже нет примера использования. И что с ним делать? |
| Автор: hexzo 25.8.2011, 08:11 | ||
Надо шаблон пихать в CellTemplate.
|
| Автор: hexzo 25.8.2011, 08:30 |
| Блин, а где свойство для стиля? |
| Автор: Gvozdin 25.8.2011, 09:11 |
| Если вы делаете флаг IsNew у директории, то вам надо сделать в DataTemplate тригер который отобразит TextBox(скроет TextBlock). |
| Автор: hexzo 25.8.2011, 10:29 | ||
Gvozdin
Тока триггер же должен быть в стиле, а свойства для стиля там нет. Но зато есть свойство CellTemplateSelector. У меня просто слов на это wpf не хватает. |
| Автор: Gvozdin 25.8.2011, 10:36 | ||
Да вот так сделайте, какой стиль?
И вообще хочу сказать что ListView был актуален когда не было DataGrid, сейчас же для гридов лучше использовать DataGrid. Очень хороший контрол, проблем с ним почти нет. |
| Автор: hexzo 25.8.2011, 13:06 | ||
Gvozdin
А я так сам шаблон не переопределю. Наверное. Спасибо за помощь. В итоге я решил, что лучше воспользоваться GreedViewColumn.CellTemplateSelector. |
| Автор: Gvozdin 25.8.2011, 20:31 |
| Тоже вариант, но минус этого в том, что нельзя будет как в тригере по изменению свойства поменять сразу шаблон |