Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataTemplate for ListView.ItemsTemplate / 11 сообщений из 11, страница 1 из 1
08.09.2017, 12:35
    #39518095
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
Привет!
есть ListView.ItemSource = System.Data.DataTable.DefaultView

пытаюсь создать DataTemlate для ListVuew.ItemsTemplate
с чекбоксом и значением из определённой колонки:
Код: xml
1.
2.
3.
4.
5.
6.
    <DataTemplate x:Key="lvItemTemlate">
        <StackPanel Orientation="Horizontal">
            <CheckBox IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
            <TextBlock Text="{Binding  [Col2]}" Margin="5,0,0,0"/>
        </StackPanel>
    </DataTemplate>



как динамически менять привязку к колонке [Col2] (TextBlock Text="{Binding [Col2]}")?
т.е. там может быть или [Col1], или [Col3] или ... или [ColN]

СПАСИБО!
...
Рейтинг: 0 / 0
08.09.2017, 14:50
    #39518229
vb_sub
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
WitC, менять значение самой Col2
...
Рейтинг: 0 / 0
08.09.2017, 15:08
    #39518259
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
vb_sub,

как вариант, сделал так
в XAML
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
    <!--ListView ItemTemplate-->
    <DataTemplate x:Key="lvItemCheckBoxTemlate">
        <StackPanel Orientation="Horizontal">
            <CheckBox IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
            <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=Content}" Margin="5,0,0,0"/>
        </StackPanel>
    </DataTemplate>
    <!--ListWiew ItemTemplate-->



и в коде
Код: c#
1.
2.
ListView lv = new ListView() { SelectionMode = SelectionMode.Multiple, ItemTemplate = dg.FindResource("lvItemCheckBoxTemlate") as DataTemplate };
lv.ItemsSource = dg.ItemsSource.OfType<System.Data.DataRowView>().Select(x => x[Column.Header.ToString()]);



но, как-то не верится, что нельзя динамически привязаться к полю в XAML, возможно через конвертёр как-то...
вариант работает, спасибо.
может у кого есть более изящный способ, буду благодарен...
...
Рейтинг: 0 / 0
08.09.2017, 15:31
    #39518281
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
объясните русским языком, что конкретно нужно
Если надо ListView c CheckBox'ом слева, то это делает просто и без гемороя
не очень понятно, что должно быть в результате ваших манипуляций
+
CheckBox унаследовано от ContentControl, нет ни какого смысла размещать CheckBox и рядос с ним TextBlock, достаточно свойству CheckBox.Content задать значение которое вы задаете для TextBlock, оно будет отображатьс в том же TextBlock, но уже внутри CheckBox'а и следовательно будет его частью и при фокусировании разница будет заметна.
либо в фокусе будет только глиф чекбокса, либо глиф + содержимое.

напишите точно, что хотите, скину пример.
...
Рейтинг: 0 / 0
08.09.2017, 15:57
    #39518307
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
Roman Mejtes,

вопрос больше в привязке.
ListView.ItemSource = System.Data.DataTable.DefaultView
если при таком раскладе задать
ListView.DisplayMemberPath = "col2"
то свойство
ListView.ItemTemplate задать не возможно:
System.InvalidOperationException: 'Cannot set both DisplayMemberPath and ItemTemplate.'
пока выкрутился через лямбду.

на счет ТекстБлока:
если текст в поле System.Data.DataTable.DefaultView будет слишком длинный, хочу чтобы он обрезался и в конце появлялось троеточее... (TextDecorations)

что требуется.
Есть ДатаГрид. необходимо на каждое ДатаГридКолумнХёадер навешать автофильтр. за пример взял автофильтр Эксель.
...
Рейтинг: 0 / 0
08.09.2017, 15:58
    #39518308
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
что есть:
...
Рейтинг: 0 / 0
08.09.2017, 15:58
    #39518309
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
что требуется:
...
Рейтинг: 0 / 0
08.09.2017, 17:07
    #39518347
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
я уже столько раз делал это д...мо, что еще раз не хочется :)
это довольно объемная задача, так, что за просто так я её делать не буду :)
У GridViewColumnHeader'а, есть свойство DisplayMemberPath и CellTemplate, в отображаемом списке можно просто использовать либо Binding, либо точно такой же шаблон. Можно шаблон разместить в шаблоне, как вариант, либо переопределить шаблон элемента списка фильтра и добавить туда чекбокс.
в основном делал такое для DataGrid. Для GridView даже не пробовал, не думаю, что сильно сложнее.
...
Рейтинг: 0 / 0
08.09.2017, 17:08
    #39518348
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
еще в процессе отображения значений стоит либо фильтровать, либо затемнять уже отфильтрованные
...
Рейтинг: 0 / 0
08.09.2017, 17:18
    #39518354
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
Roman Mejtes,

Roman MejtesУ GridViewColumnHeader'а, есть свойство DisplayMemberPath и CellTemplate


да, я уже копал в эту сторону, но не понравились заголовки колонок при отображении ListView.
может ещё раз пересмотрю.

спасибо.
...
Рейтинг: 0 / 0
08.09.2017, 17:50
    #39518381
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataTemplate for ListView.ItemsTemplate
WitC,

покопался впроектах, есть вот такой пример:
это DataGrid
Он инициализируется через XML'ки.
Одна XML инициализирует внешний вид контрола, условное форматирование ячеек, возможность задать практически все возможные параметры, включить сортировку, фильтрацию, перетаскивание столбцов, короче настроить можно как угодно и что угодно.
Данные в грид так же передаются через XML И можно их обновлять частично через те же XML
Выглядит вот так:
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataTemplate for ListView.ItemsTemplate / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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