Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382

ListViewItem horizontal orientation

11.12.2019, 10:35. Показов 2301. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такой код:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<ListView Foreground="#FF4A8CFF" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                    <ListViewItem Height="60"  PreviewMouseLeftButtonDown="btnPersons_Click">
                        <StackPanel Orientation="Horizontal">
                            <materialDesign:PackIcon Kind="People" Width="25" Height="25" Margin="10" VerticalAlignment="Center"/>
                            <TextBlock Text="Клиенты" VerticalAlignment="Center" Margin="20 10"/>
                        </StackPanel>
                    </ListViewItem>
                    <ListViewItem Height="60" PreviewMouseLeftButtonDown="btnCars_Click">
                        <StackPanel Orientation="Horizontal" >
                            <materialDesign:PackIcon Kind="CarSports" Width="25" Height="25" Margin="10" VerticalAlignment="Center"/>
                            <TextBlock Text="Авто" VerticalAlignment="Center" Margin="20 10"/>
                        </StackPanel>
                    </ListViewItem>
</ListView>
Как сделать эти итемы горизонтально ? ListViewItem не поддерживает ориентацию.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2019, 10:35
Ответы с готовыми решениями:

Binding ListViewItem Value
XAML: &lt;ListView x:Name=&quot;listView1&quot; IsSynchronizedWithCurrentItem=&quot;True&quot; Grid.Row=&quot;0&quot; Grid.Column=&quot;0&quot;...

ListViewItem + ContextMenu
Здравствуйте! Возник вопрос. Есть ListView у которого View == Details. Есть скажем 3 колонки (по сути не важно). Есть объект. Создаётся...

Наследование от ListViewItem
Описываю свой класс объекта, свойства которого выводятся у меня в ListView. Проблем никаких не было, но понадобилась возможность изменять...

12
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
11.12.2019, 10:55
Цитата Сообщение от SCAR101 Посмотреть сообщение
Как сделать эти итемы горизонтально ?
В смысле, чтобы они располагались слева-направо?
XML
1
2
3
4
<ListView>
  <ListView.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal" />
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
11.12.2019, 11:19  [ТС]
novikov.ea, Да но тогда он не дает вложить в стек пэнел
XML
1
2
3
4
5
6
7
8
9
10
<ListView Width="120" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Auto">
                            <ListView.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel  Orientation="Horizontal">
                                        <materialDesign:PackIcon Kind="Check" Width="45" Height="45" Foreground="#FF49C5FF"/>
                                        <materialDesign:PackIcon Kind="Check" Width="45" Height="45" Foreground="#FF49C5FF"/>
                                    </StackPanel>
                                </ItemsPanelTemplate>
                            </ListView.ItemsPanel>
</ListView>
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
11.12.2019, 11:23
Лучший ответ Сообщение было отмечено SCAR101 как решение

Решение

Свойство ListView.ItemsPanel лишь только устанавливает панель для компановки элементов внутри ListView. Сами элементы необходимо прописывать непосредственно внутри ListView

XML
1
2
3
4
5
6
7
8
9
10
11
<ListView>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    
    <materialDesign:PackIcon />
    <materialDesign:PackIcon />
 
</ListView>
Или в ItemsSource, если использовать MVVM
XML
1
2
3
4
5
6
7
<ListView ItemsSource="{Binding MyItems}">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>
1
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
11.12.2019, 11:49  [ТС]
novikov.ea, ооооо спасибо огромное ) теперь понятно )

Добавлено через 7 минут
novikov.ea, Как он странно работает, если я нажимаю на второй итем то первый проподает пока не сделаешь ширину листвью побольше.
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
11.12.2019, 13:02
Цитата Сообщение от SCAR101 Посмотреть сообщение
Как он странно работает
Не странно, а работает так, как написано в XAML.
Настройте поведение скролла:
XML
1
<ListView ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Hidden">
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
11.12.2019, 13:03  [ТС]
novikov.ea, в том то и дело что мне не надо чтобы отображался скрол, я их выключил все )
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
11.12.2019, 13:09
Если вы выключили скролл, и второй элемент не помещается, то он не будет виден. Всё верно
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
11.12.2019, 13:55  [ТС]
novikov.ea, Смотри вот код:
XML
1
2
3
4
5
6
7
8
9
<ListView Width="120" HorizontalAlignment="Right" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF4A8CFF">
                            <ListView.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel  Orientation="Horizontal" Height="60"/>
                                </ItemsPanelTemplate>
                            </ListView.ItemsPanel>
                            <materialDesign:PackIcon Kind="Check" Width="45" Height="45" Foreground="#FF49C5FF"/>
                            <materialDesign:PackIcon Kind="Cancel" Width="45" Height="45" Foreground="#FF49C5FF"/>
                        </ListView>
То есть оба элемента видны полностью, я понимаю если бы второй элемент чутка не влезал, а там даже с запасом получается, но ему видимо мало, приходится ставить ширину 122 а не 120. Видимо при отключении скрола он все равно резервирует под него место.

Добавлено через 30 минут
novikov.ea, еще почему то теперь не спервого раза срабатывает событие PreviewMouseLeftButtonDown="btnAdd_Click ", то есть анимация происходит что я мышкой щелкнул, но событие не выполняется.

Добавлено через 9 минут
novikov.ea, Понял почему не с первого раза, событие то теперь привязывается к самой иконке а не к лист вью, так как раньше, и теперь нужно тыкать на саму иконку. Или можно как то привязать к лист вью но как то определить события для итемов ?
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
11.12.2019, 14:19
Цитата Сообщение от SCAR101 Посмотреть сообщение
можно как то привязать к лист вью но как то определить события для итемов
Если вам нужен ListView, то сделайте коллекцию элементов MyItems во ViewModel, опишите по-нормальному ItemTemplate и привяжите команду к кнопке.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<ListView ItemsSource="{Binding MyItems}">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Button Command="{Binding MyCommand}">
                <Button.Template>
                    <ControlTemplate>
                        <ContentPresenter />
                    </ControlTemplate>
                </Button.Template>
                <materialDesign:PackIcon Kind="{Binding MyKind}" />
            </Button>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
11.12.2019, 14:32  [ТС]
novikov.ea, Все, разобрался ) сделал так )
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<ListView  Width="183" HorizontalAlignment="Left" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled" Foreground="#FF4A8CFF" >
                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel  Orientation="Horizontal"/>
                    </ItemsPanelTemplate>
                    
                </ListView.ItemsPanel>
                <ListViewItem PreviewMouseLeftButtonDown="btnAdd_Click">
                    <materialDesign:PackIcon Kind="PeopleAdd" Width="45" Height="45" HorizontalAlignment="Center" VerticalAlignment="Center" />
                </ListViewItem>
                <ListViewItem  PreviewMouseLeftButtonDown="btnEdit_Click">
                    <materialDesign:PackIcon Kind="PersonEdit" Width="45" Height="45" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                </ListViewItem>
                <ListViewItem PreviewMouseLeftButtonDown="btnDelete_Click">
                    <materialDesign:PackIcon Kind="DeleteForever" Width="45" Height="45" VerticalAlignment="Center" HorizontalAlignment="Center" />
                </ListViewItem>         
            </ListView>
Еще раз спасибо за помощь )
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
11.12.2019, 14:37
Я так и не понял, зачем вам ListView тогда. С тем же успехом можно было просто Button'ы использовать.
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
12.12.2019, 07:02  [ТС]
novikov.ea, Ради анимации клика ) на баттоне он другой )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2019, 07:02
Помогаю со студенческими работами здесь

Проверка и выделение ListViewItem
Есть коллекция обьектов класса: public class UrlCount { public string Url { get; set; } public...

Как убрать рамки у ListViewItem?
Как убрать рамки у ListViewList и у самого ListView? Я пробывал через BorderBush=&quot;{x:Null}&quot; Borderthikness=0 и Padding. &lt;ListView...

Как заставить мигать ListViewItem?
Если у объекта свойство True, то заставить мигать

Как получить ширину и высоту ListViewItem?
Загрузилось приложение, заполнился ListView. Как получить ширину и высоту ListViewItem? Насколько мне известно, ширина и высота у всех...

ListView: добавить картинку в каждый ListViewItem
Здравствуйте. Вот у меня есть WPF окно, на нём ListView: &lt;Window x:Class=&quot;WpfApplication_Test.MainWindow&quot; ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru