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

Кнопки в ListView

10.12.2023, 19:49. Показов 689. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Я пишу клиентское приложение для работы с БД. У меня есть ListView, который выводит записи из моей БД с SQL.

Собсна, разметка:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    <Grid>
        <ListView ItemsSource="{Binding Катера}" Name="ListViewBoats" HorizontalAlignment="Center"
          Margin="0,125,0,125">
            <ListView.View>
                <GridView>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Код_катера}"
                Header="Код катера" Width="100" />
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Название}"
                Header="Название" Width="100"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Тип}"
                Header="Тип" Width="150"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Водоизмещение}"
                Header="Водоизмещение" Width="150"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=Дата_постройки, StringFormat='yyyy-MM-dd'}"
                Header="Дата постройки" Width="150"/>
                </GridView>
            </ListView.View>
        </ListView>
        <Button Name="AddBtn" Content="Добавить" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="70, 50" Click="AddBtn_Click"></Button>
        <Button Name="DeleteBtn" Content="Удалить" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="70, 50" Click="DeleteBtn_Click"></Button>
        <Button Name="KeepBtn" Content="Сохранить" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="70, 50"></Button>
    </Grid>
И CS-код:
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
public partial class BoatsPage : Page
{
    DBGaneevaEntities dataEntities = new DBGaneevaEntities();
 
    private readonly ObservableCollection<BoatsModel> ItemsCollection = new ObservableCollection<BoatsModel>();
    public BoatsPage()
    {
        InitializeComponent();
        ListViewBoats.ItemsSource = ItemsCollection;
    }
    private void Page_Loaded(object sender, RoutedEventArgs e) 
    {
        var TableBoats =
        from boats in dataEntities.Катера
        select new
        {
            boats.Код_катера,
            boats.Название,
            boats.Тип,
            boats.Водоизмещение,
            boats.Дата_постройки
        };
 
        ListViewBoats.ItemsSource = TableBoats.ToList();
    }
 
    private void DeleteBtn_Click(object sender, RoutedEventArgs e)
    {
        var button = sender as Button;
        if (button == null)
            return;
        var item = button.DataContext as BoatsModel;
        ItemsCollection.Remove(item);
    }
 
    private void AddBtn_Click(object sender, RoutedEventArgs e)
    {
 
    }
}
Суть вопроса: сделать кнопки "Добавить", "Удалить" и "Сохранить". Я не знаю как.. Помогите, во вторник сдавать.(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2023, 19:49
Ответы с готовыми решениями:

Добавление кнопки в ListView
Всем привет! Как можно добавить кнопку в ListViev, как показано на картинке? Да, здесь сделано на xaml, мне надо на c# Windows Form

ListView. После добавления кнопки перестал быть доступен сам ListView
Кастомизировал ListView с помощью нескольких TextView. Но после того, как добавил ImageButton сам список стал недоступен для клика, а...

Добавить кнопки в ListView
подскажите, кто знает, как добавить такую кнопку в ListView???

6
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,119
Записей в блоге: 2
10.12.2023, 21:42
Цитата Сообщение от zloving Посмотреть сообщение
select new
        {
            boats.Код_катера,
            boats.Название,
            boats.Тип,
            boats.Водоизмещение,
            boats.Дата_постройки
        };
Не используйте анонимные класс, если потом к ним потребуется обращаться.
В вашем случае вам нужен маппинг в класс BoatsModel.
С большой долей вероятности dataEntities.Катера и так возвращает этот класс.

Цитата Сообщение от zloving Посмотреть сообщение
DBGaneevaEntities
Что это за класс? Наследник от DbContext?

Цитата Сообщение от zloving Посмотреть сообщение
Код_катера
В 2023 имена типов и их членов на неанглийском языке...
Выглядит, мягко говоря, очень говяно...

Добавлено через 6 минут
Исходя из моих предположений выше:
C#
3
4
5
    private readonly DBGaneevaEntities dataEntities = new DBGaneevaEntities();
 
    private readonly ObservableCollection<BoatsModel> ItemsCollection;
C#
6
7
8
9
10
11
    public BoatsPage()
    {
        InitializeComponent();
        ItemsCollection = dataEntities.Speedboat.Local.ToObservableCollection();
        ListViewBoats.ItemsSource = ItemsCollection;
    }
C#
11
12
13
14
    private void Page_Loaded(object sender, RoutedEventArgs e) 
    {
        dataEntities.Speedboat.Load();
    }
C#
27
28
29
30
31
32
    private void DeleteBtn_Click(object sender, RoutedEventArgs e)
    {
        var item = ListViewBoats.SelectedItem as BoatsModel;
        if(item is not null)
            ItemsCollection.Remove(item);
    }
Добавлено через 2 минуты
Цитата Сообщение от zloving Посмотреть сообщение
сделать кнопки "Добавить" ... и "Сохранить"
Добавить и Сохранить - что?
Где данные для этого?
1
5 / 5 / 1
Регистрация: 22.04.2021
Сообщений: 141
12.12.2023, 11:21  [ТС]
А где найти этот Speedboat?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,119
Записей в блоге: 2
13.12.2023, 18:00
Цитата Сообщение от zloving Посмотреть сообщение
А где найти этот Speedboat?
В вашем случае, на русском это Катера.

Вообще, по заданию, это "Катера" или "все типы маломерных судов" (лодка, шлюп, катер, яхта, бот и т.д.)?

Добавлено через 43 секунды
Цитата Сообщение от Элд Хасп Посмотреть сообщение
BoatsModel
- это данные ОДНОГО судна, или какой-то их коллекции?

Добавлено через 1 минуту
Boat - это даже, наверное, не маломерное, а любое судно.
0
5 / 5 / 1
Регистрация: 22.04.2021
Сообщений: 141
13.12.2023, 18:24  [ТС]
По заданию Катера. Вот приложение.
Вложения
Тип файла: zip Рыболовная фирма.zip (13.16 Мб, 2 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,119
Записей в блоге: 2
13.12.2023, 22:20
Цитата Сообщение от zloving Посмотреть сообщение
По заданию Катера
Тогда по английски это будет Speedboat.

Добавлено через 42 секунды
Цитата Сообщение от zloving Посмотреть сообщение
Вот приложение.
Залейте его, пожалуйста, на GitHub и дайте ссылку

Добавлено через 1 час 32 минуты
zloving, чем продиктован выбор Framework вместо .Net?

Добавлено через 2 минуты
C#
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
    public partial class BoatsPage : Page
    {
        DBGaneevaEntities dataEntities = DBGaneevaEntities.GetContext(); // new DBGaneevaEntities();
        public ObservableCollection<Катера> ListBoats { get; /*set;*/ } // = new ObservableCollection<Катера>();
 
        public BoatsPage()
        {
            ListBoats = dataEntities.Катера.Local;
            InitializeComponent();
        }
        private void Page_Loaded(object sender, RoutedEventArgs e) 
        {
            dataEntities.Катера.Load();
            //var TableBoats =
            //from boats in dataEntities.Катера
            //select new
            //{
            //    boats.Код_катера,
            //    boats.Название,
            //    boats.Тип,
            //    boats.Водоизмещение,
            //    boats.Дата_постройки
            //};
 
            //ListViewBoats.ItemsSource = TableBoats.ToList();
        }
Добавлено через 7 минут
XML
1
2
<Page x:Class="Рыболовная_фирма.BoatsPage"
      x:Name="boatsPage"
XML
15
16
17
18
19
20
    <Grid>
        <!--<ListView SelectedItem="{Binding currentBoat}" ItemsSource="{Binding Boats}" Name="ListViewBoats" HorizontalAlignment="Center"-->
        <ListView x:Name="ListViewBoats" SelectedItem="{Binding currentBoat}"
                  ItemsSource="{Binding ListBoats, ElementName=boatsPage}"
                  HorizontalAlignment="Center"
                  Margin="0,50,0,125">
Добавлено через 43 секунды
zloving, но по нормальному - практически с нуля надо весь проект переделывать.

Добавлено через 15 минут
C#
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
        private void Page_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            //if (Visibility == Visibility.Visible)
            //{
            //    DBGaneevaEntities.GetContext().ChangeTracker.Entries().ToList().ForEach(p => p.Reload());
            //    ListViewBoats.ItemsSource = DBGaneevaEntities.GetContext().Катера.ToList();
            //}
        }
 
        private void DeleteBtn_Click(object sender, RoutedEventArgs e)
        {
            //var currentBoat = (sender as Button).DataContext as Катера;
            if (ListViewBoats.SelectedItem is Катера currentBoat &&
                MessageBox.Show("Вы точно хотите выполнить удаление?", "Внимание!",
                MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                try
                {
                    
                    DBGaneevaEntities.GetContext().Катера.Remove(currentBoat);
                    DBGaneevaEntities.GetContext().SaveChanges();
 
                    // ListViewBoats.ItemsSource = DBGaneevaEntities.GetContext().Катера.ToList();
                }
 
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }
        }
Добавлено через 1 минуту
zloving, сразу предупреждаю - в каких-то случаях может работать криво.
Чтобы всегда работало ровно, слишком много нужно переделок.
0
5 / 5 / 1
Регистрация: 22.04.2021
Сообщений: 141
14.12.2023, 15:50  [ТС]
Спасибо за помощь, но немного я по-другому сделал.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2023, 15:50
Помогаю со студенческими работами здесь

Как сделать кнопки в ListView?
Здравствуйте. Возник такой вопрос: Как сделать панель с поиском данных? Я сейчас вам картинку скину. Ну там сами поймете.Заранее спасибо...

ListView никак не реагирует на кнопки
Составил несколько вложенных ListView. Проблема в том что кнопки редактирования никак не реагируют на клики. Хотя составлял такое же в...

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

Поместить в элемент ListView картинку и кнопки
Здравствуйте, пытаюсь разобраться со списками и возник такой вопрос: &quot;Можно ли, в элемент listview засунуть помимо textview, еще и...

Соединённые кнопки и несколько выводимых значений в ListView
Здравствуйте. Во время написания моей первой программы на Android у меня возникла пара вопросов касательно возможностей. Первый вопрос,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru