Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
1
.NET 4.x

ListView: добавить картинку в каждый ListViewItem

03.01.2011, 05:52. Показов 5128. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Вот у меня есть WPF окно, на нём ListView:
XAML код главного окна (клик, чтобы развернуть - это не ссылка)
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<Window x:Class="WpfApplication_Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
    <Grid>
        <ListView Margin="12" Name="listView" MouseDoubleClick="listView_MouseDoubleClick">
            <ListView.View>
                <GridView>
                    <GridView.Columns>
                        <GridViewColumn Header="" Width="30"  DisplayMemberBinding="{Binding IsEnabled}"/>
                        <GridViewColumn Header="Первое текстовое поле" Width="200"  DisplayMemberBinding="{Binding TextValueOne}"/>
                        <GridViewColumn Header="Второе текстовое поле" Width="200" DisplayMemberBinding="{Binding TextValueTwo}"/>
                    </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>


Есть класс объекты которого я добавляю в ListView. У этого класса есть свойство IsEnabled.
Код класса (клик, чтобы развернуть - это не ссылка)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    class SomeObject
    {
        String textValueOne;
        String textValueTwo;
 
        public String TextValueOne { get { return textValueOne; } }
        public String TextValueTwo { get { return textValueTwo; } }
 
        public Boolean IsEnabled { get; set; }
 
        public SomeObject(String TextValueOne, String TextValueTwo)
        {
            this.textValueOne = TextValueOne;
            this.textValueTwo = TextValueTwo;
            this.IsEnabled = true;
        }
    }


Вот код главного окна:
Код главного окна (клик, чтобы развернуть - это не ссылка)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
 
namespace WpfApplication_Test
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            ObservableCollection<SomeObject> someObjects = new ObservableCollection<SomeObject>();
            for (int i = 0; i < 5; i++)
            {
                SomeObject so = new SomeObject(
                    String.Format("Основоной текст - {0}", i), 
                    String.Format("Другой текст - {0}", i));
                someObjects.Add(so);
            }
            this.listView.ItemsSource = someObjects;
        }
 
        private void listView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            SomeObject selectedSomeObject = ((SomeObject)this.listView.SelectedValue);
            selectedSomeObject.IsEnabled = !selectedSomeObject.IsEnabled;
 
            String msgText = String.Format(
                "Изменилось значение свойства IsEnabled на \"{0}\" у объекта значением первого текстового поля: \"{1}\"",
                selectedSomeObject.IsEnabled, selectedSomeObject.TextValueOne);
            MessageBox.Show(msgText);
        }
    }
}


Запускаю проект, когда жму дабл клик по любому выделеному элементу в списке, то на экран выводится сообщение показывающее на какое значение изменилось свойство IsEnabled и у какого элемента в списке. Это всё для наглядности.

Вот меня интересует, как мне сделать так, чтобы Каждый ListViewItem мог отображать графически значение свойства IsEnabled. Например красный кружок, значит IsEnabled == false, зелёный значит true.


Вот примерно, что я хочу получить в итоге:
~52 килобайта

Приложил тестовый проект к сообщению. Вдруг, кто-то всё-таки решит помочь, а самому делать пример лень, то вот готовый прикреплён (WPF проект для Visual Studio 2010)
Вложения
Тип файла: rar WpfApplication_Test.rar (33.1 Кб, 25 просмотров)
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2011, 05:52
Ответы с готовыми решениями:

В обработчике события PreviewMouseLeftButtonDown для ListView получить ListViewItem
Дело в том, что ListViewItem может иметь произвольный стиль или шаблон. У меня в обработчике,...

ListView не реагирует на изменение ListViewItem.ListViewSubItem.text
Здравствуйте, такая проблема: есть метод делегата, который получает данные из соседнего потока и...

Шаблон для ListView. Изменить внешний вид ColumHeader. Изменить внешний вид ListViewItem'ов. Подробности, код, скриншоты внутри...
Здравствуйте. Есть ListView, я к нему делаю шаблон. И появилось несколько вопросов. 1) Как в...

Как отобразить картинку в ListView?
Есть программка, данные вывожу в все вижу кроме иконки, за место нее просто пишет название типа, ...

24
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
08.04.2012, 18:43  [ТС] 21
Author24 — интернет-сервис помощи студентам
При попытке глянуть инфу о системном процессе появляется сообщение об отказе в доступе. Если запустить прогу с правами администратора, то инфу можно смотреть.
1
32 / 15 / 1
Регистрация: 06.05.2011
Сообщений: 56
09.04.2012, 01:03 22
Цитата Сообщение от DimonR91 Посмотреть сообщение
Еще возник вопрос насчет использование ListView. Так как я стандартной сортировки у него не нашел, то писал свой метод сортировки записей при нажатии на хедер колонки. Однако сортировка происходит медленно. Интерфейс подвисает. Кто-нибудь делал сортировку для ListView? Подскажите как сделать, пожалуйста.
Вот сортировку реализовал с помощью:
http://social.msdn.microsoft.c... 049067234d
0
4 / 4 / 0
Регистрация: 07.05.2011
Сообщений: 53
12.04.2012, 07:39 23
Цитата Сообщение от Casper-SC Посмотреть сообщение
Во-первых, вынеси весь код из конструктора окна и больше туда ничего не пихай, всё делай в обработчике события Initialized или Loaded, так как в конструкторе окна вылетает исключение, оно оборачивается в XamlParseException, что несомненно неудобно для тестирования и нахождения ошибок.
Ну, не всегда и везде это разумно. А чтобы с исключениями удобно было - надо включить прерывание при любых исключениях (есть фильтр), в т.ч. пойманных в catch (ctrl + d + e)
0
MayorSheFF
10.07.2012, 09:39 24
Цитата Сообщение от DimonR91 Посмотреть сообщение
С проблемой с namespace разобрался (заново проект создал). Спасибо Casper-SC за помощь.
Привет всем. DimonR91, пожалуйста, напишите как Вы обошли данную проблему. Бьюсь с ней уже 2-й день. Подскажите пожалуйста.
32 / 15 / 1
Регистрация: 06.05.2011
Сообщений: 56
13.07.2012, 00:14 25
Сейчас уже точно не помню.
Вроде бы у меня была проблема из-за того, что я копировал невнимательно код из другого проекта.
Сначала я работал с одним солюшеном, но потом его названием резко опротивило.
И я решил создать новый солюшн с своим новым названием, блекджеком и т.д.
Копировал туда код из старого проекта. Но название преоктов различались, соответсвенно разнились и неймспейсы. Вот с ними я что-то и напутал.
Так что попробуй пересоздай проект и следи за неймспейсами.
0
13.07.2012, 00:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2012, 00:14
Помогаю со студенческими работами здесь

Загрузить в Image выбранную картинку в ListView
Народ, помогите пожалуйта. Не могу заставить Image отображать выбранную в ListView картинку. ...

ListView , как добавить картинку в SubItems
такой код: Dim item1 As New ListViewItem(name, 0) ...

ListView не реагирует на изменение ListViewItem.ListViewSubItem.text
Здравствуйте, такая проблема: есть метод делегата, который получает данные из соседнего потока и...

Для виртуализации ListView требуется допустимое значение ListViewItem
Приветствую. Продолжаю свои опыты... Перевел ListView в режим virtualmode,список строиться, но...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru