Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/33: Рейтинг темы: голосов - 33, средняя оценка - 4.79
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
WPF

Приложение с выбором по условию

01.03.2021, 20:17. Показов 7569. Ответов 91
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Понимаю, что сам еще не дорос до реализации такого рода приложения, как то туго дается.
Решил попробовать такой маршрут.

Хочу Вас попросить реализовать зачатки необходимой мне задачи, а я уже в последующем развивая его буду разбираться в механизмах присущих программированию.

Задача следующая.

Нужна таблица такого вида как на картинке.



То есть при открытии отображается сегодняшняя дата и соответственно во всех ячейках нули.
Потом эти нули меняем где надо на значения.
Листая дату необходимо видеть результат который был указан на выбранной дате.
То есть как то реализовать выборку информации из файла по условию.
Еще кнопку сохранить надо замастырить - забыл нарисовать.
Миниатюры
Приложение с выбором по условию  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.03.2021, 20:17
Ответы с готовыми решениями:

Поле с автозаполнением по условию с выбором параметров
Доброго дня, друзья. Выручайте, ломаю голову 2 дня. Нашел разные темы и примеры, но того что нужно мне (может я в бутылку лезу?) нету....

Отсортировать код ниже по данному условию:(Ключ: скидка клиента. Сортировка выбором. )
#include using namespace std; struct client{ string fio; string address; double discount; }; int main(){ struct client...

Оконное приложение с выбором пользователя
Приветствую всех! Стоит такая задача в C# из WinForm: из Form1 (как стартовое окно) направить два разных раздела или направления. Т.е....

91
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
10.03.2021, 14:48  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
public class TasksDepartmentsForDay
{
    public DateTime Date {get;}
    public ObservableCollection<TasksDepartment> TasksDepartments{get;}
      = new ObservableCollection<TasksDepartment>();
public TasksDepartmentsForDay(DateTime date)
      => Date = date.Date;
}
Вот тут указывает на несогласованность по доступности. Не соображу что это, подскажите пожалуйста.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
10.03.2021, 15:42
Цитата Сообщение от cypoc Посмотреть сообщение
Вот тут указывает на несогласованность по доступности.
Скорее всего вы у класса TasksDepartment не указали модификатор public.
Классы, предназначенные для использования в WPF, всегда объявляйте публичными.
1
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
11.03.2021, 08:23  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
data.Tasks.Add(...);
не соображу мне тут нужно указать свойства из класса где я определил 1 день? Если до то оно не выберается
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.03.2021, 10:34
Цитата Сообщение от cypoc Посмотреть сообщение
Цитата Сообщение от Элд Хасп Посмотреть сообщение
data.Tasks.Add(...);
не соображу мне тут нужно указать свойства из класса где я определил 1 день? Если до то оно не выбирается
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
public class DepartmentsTasksVM : BaseInpc
{
    // Эту коллекцию надо как-то заполнить первичными данными
    // Но пока просто запишите несколько дней в неё в конструкторе
    // ViewModel. 
    private readonly List<DayData> dayDatas = new List<DayData>();
 
    public DepartmentsTasksVM()
    {
       // Запись начальных данных одного дня
        var data = new DayData(new DateTime(2021,1,1));
        data.Tasks.Add(new TasksDepartment("Отдел 1") {InProgressTasks=1, CompletedTasks=2});
        data.Tasks.Add(new TasksDepartment("Отдел 2") {InProgressTasks=3, CompletedTasks=4});
        data.Tasks.Add(new TasksDepartment("Отдел 3") {InProgressTasks=5, CompletedTasks=6});
 
        dayDatas.Add(data);
 
       // Запись начальных данных другого дня
        data = new DayData(new DateTime(2021,1,15));
        data.Tasks.Add(new TasksDepartment("Отдел 1") {InProgressTasks=4, CompletedTasks=3});
        data.Tasks.Add(new TasksDepartment("Отдел 2") {InProgressTasks=2, CompletedTasks=1});
        data.Tasks.Add(new TasksDepartment("Отдел 3") {InProgressTasks=0, CompletedTasks=5});
 
        dayDatas.Add(data);
 
       // И так несколько дней.
 
    }
1
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
11.03.2021, 11:18  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
// Запись начальных данных одного дня
        var data = new DayData(new DateTime(2021,1,1));
        data.Tasks.Add(...);
        data.Tasks.Add(...);
        data.Tasks.Add(...);
        data.Tasks.Add(...);
// Запись начальных данных другого дня
        var data = new DayData(new DateTime(2021,1,13));
        data.Tasks.Add(...);
        data.Tasks.Add(...);
        data.Tasks.Add(...);
        data.Tasks.Add(...);
// И так несколько дней.
2 раза переменную data использовать я так понимаю не корректно. Да и вообще это разве необходимо? Я думал мы будем читать информацию в коллекцию дня из xml файла, по крайней мере мне бы так хотелось для большей наглядности.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.03.2021, 11:25
Цитата Сообщение от cypoc Посмотреть сообщение
2 раза переменную data использовать я так понимаю не корректно.
Второй раз не должно быть var.

Цитата Сообщение от cypoc Посмотреть сообщение
Я думал мы будем читать информацию в коллекцию дня из xml файла, по крайней мере мне бы так хотелось для большей наглядности.
Без пролем.
Сделайте десериализацию XML и потом перегоните данные в нужный нам тип.
Но это всё уже надо делать в Модели.
Если справитесь - делайте.
Если нет, то давайте закончим с ViewModel+View.
А потом добавим туда Модель.

Это не правильно. конечно, но раз уже так начали, то лучше продолжить.
0
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
11.03.2021, 12:27  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
public DayData SelectedDay {get => _selectedDay; private set => Set(ref _selectedDay, value);}
private void SelectDay(DateTime date)
    {
        // Здесь логика выборки нужного дня из списка dayDatas
        // если в ней нет нужного дня, то создаётся новый пустой день
        DayData day = ......;
// Дальше проверка текущего выбранного дня SelectedDay
// 1) Если в нём есть данные, то ищется этот день в списке dayDatas
       // Если его там нет, то день добавляется в список.
// 2)  Если в нём нет данных, то ищется этот день в списке dayDatas
       // Если он там есть, то день удаляется из списка.
// После обработки текущего выделенного дня устанавливается требуемый
      SelectedDay = day;
}
Этот код должен быть в VM, там же где сформированы коллекции дней?

Добавлено через 23 секунды
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Второй раз не должно быть var
а какую роль тут игрет var?
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если справитесь - делайте.
Если нет, то давайте закончим с ViewModel+View.
я с Вами согласен по поводу закончить с ViewModel+View)))
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.03.2021, 13:09
Цитата Сообщение от cypoc Посмотреть сообщение
Этот код должен быть в VM, там же где сформированы коллекции дней?
Да.
Это приватный метод модели к которому будут обращаться команды.

Цитата Сообщение от cypoc Посмотреть сообщение
а какую роль тут игрет var?
Это объявление переменной.
Переменная объявляется только один раз.
Поэтому во второй раз var не нужен.
1
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
11.03.2021, 13:59  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это приватный метод модели к которому будут обращаться команды.
вроде бы немного укладывается в голове.
Нужна помощь в реализации
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void SelectDay(DateTime date)
    {
        // Здесь логика выборки нужного дня из списка dayDatas 
        // если в ней нет нужного дня, то создаётся новый пустой день
        DayData day = ......;
 
       // Дальше проверка текущего выбранного дня SelectedDay 
 
       // 1) Если в нём есть данные, то ищется этот день в списке dayDatas 
       // Если его там нет, то день добавляется в список.
 
       // 2)  Если в нём нет данных, то ищется этот день в списке dayDatas
       // Если он там есть, то день удаляется из списка.
 
 
      // После обработки текущего выделенного дня устанавливается требуемый
      SelectedDay = day;
 
    }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.03.2021, 14:47
Цитата Сообщение от cypoc Посмотреть сообщение
Нужна помощь в реализации
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Проверка смены дня. Если день тот же, то ничего делать не надо
if(date.Date == SelectedDay?.Date)
  return;
 
// Выборка дня из коллекции
DayData day = dayDatas.FirstOrDefault(d => d.Date == date.Date);
 
// Если нужного дня нет - создаём новый пустой
if (day == null)
{
    day = new DayData(date); 
    day.Tasks.Add(new TasksDepartment("Отдел 1"));
    day.Tasks.Add(new TasksDepartment("Отдел 2"));
    day.Tasks.Add(new TasksDepartment("Отдел 3"));
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Проверка наличия выделенного дня
if (SelectedDay != null) 
{
     // Проверка наличия задач в выбранном дне
     if(SelectedDay.TotalTasks == 0)
     {
         // Если день пустой, то его надо удалить
         dayDatas.Remove(SelectedDay);
     }
     else
     {
          // Если день не пустой, то надо проверить его наличие в коллекции
          if (!dayDatas.Contains(SelectedDay))
              // Если его нет, то добавить
              dayDatas.Add(SelectedDay)
      }
 
      // Замена выделенного дня запрошенным
      SelectedDay = day;
}
1
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
11.03.2021, 18:48  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
if(date.Date == SelectedDay?.Date)
  return;
у нас же коллекция отдела не содержит поля Date
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.03.2021, 20:21
Цитата Сообщение от cypoc Посмотреть сообщение
у нас же коллекция отдела не содержит поля Date
Это же тип DayData.
В нём дата дня и коллекция заданий отделам на этот день.
0
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
11.03.2021, 21:25  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Это же тип DayData.
я так понимаю это тот же класс продублирован под другим именем public class TasksDepartmentsForDay из сообщения 2

Добавлено через 9 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
f(SelectedDay.TotalTasks == 0)
Ругается, что нет поля TotalTasks
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.03.2021, 21:51
Цитата Сообщение от cypoc Посмотреть сообщение
я так понимаю это тот же класс продублирован под другим именем public class TasksDepartmentsForDay из сообщения 2
Да.
Я уже забыл за первоначальное название.

Добавлено через 28 секунд
Цитата Сообщение от cypoc Посмотреть сообщение
Ругается, что нет поля TotalTasks
Покажите полностью текущую реализацию VM.

Добавлено через 2 минуты
Посмотрите пост SelectedDay.
У него должен быть тип DayData.
Может вы ему другой тип дали?
0
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
11.03.2021, 22:00  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Покажите полностью текущую реализацию VM.
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
public class DepartmentsTasksVM : BaseModel
    {
        private readonly List<TasksDepartmentsForDay> dayDatas = new List<TasksDepartmentsForDay>();
 
        public DepartmentsTasksVM()
        {
            var data = new TasksDepartmentsForDay(new DateTime(2021, 1, 1));
            data.TaskDepartment.Add(new TasksDepartment("Отдел 1") { InProgressTasks = 1, CompletedTasks = 2 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 2") { InProgressTasks = 3, CompletedTasks = 4 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 3") { InProgressTasks = 5, CompletedTasks = 6 });
            
            data = new TasksDepartmentsForDay(new DateTime(2021, 1, 2));
            data.TaskDepartment.Add(new TasksDepartment("Отдел 1") { InProgressTasks = 1, CompletedTasks = 2 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 2") { InProgressTasks = 3, CompletedTasks = 4 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 3") { InProgressTasks = 5, CompletedTasks = 6 });            
 
            data = new TasksDepartmentsForDay(new DateTime(2021, 1, 3));
            data.TaskDepartment.Add(new TasksDepartment("Отдел 1") { InProgressTasks = 1, CompletedTasks = 2 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 2") { InProgressTasks = 3, CompletedTasks = 4 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 3") { InProgressTasks = 5, CompletedTasks = 6 });           
 
            data = new TasksDepartmentsForDay(new DateTime(2021, 1, 4));
            data.TaskDepartment.Add(new TasksDepartment("Отдел 1") { InProgressTasks = 1, CompletedTasks = 2 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 2") { InProgressTasks = 3, CompletedTasks = 4 });
            data.TaskDepartment.Add(new TasksDepartment("Отдел 3") { InProgressTasks = 5, CompletedTasks = 6 });            
        }
 
        private TasksDepartmentsForDay _selectedDay;
        public TasksDepartmentsForDay SelectedDay { get => _selectedDay; private set => Set(ref _selectedDay, value); }
 
        private void SelectDay(DateTime date)
        {
            // Здесь логика выборки нужного дня из списка dayDatas 
            // если в ней нет нужного дня, то создаётся новый пустой день
 
            if (date.Date == SelectedDay?.Date)
                return;
 
            TasksDepartmentsForDay day = dayDatas.FirstOrDefault(d => d.Date == date.Date);
 
            if (day == null)
            {
                day = new TasksDepartmentsForDay(date);
                day.TaskDepartment.Add(new TasksDepartment("Отдел 1"));
                day.TaskDepartment.Add(new TasksDepartment("Отдел 2"));
                day.TaskDepartment.Add(new TasksDepartment("Отдел 3"));
            }
 
            if (SelectedDay != null)
            {
                // Проверка наличия задач в выбранном дне
                if (SelectedDay.TotalTasks == 0)
                {
                    // Если день пустой, то его надо удалить
                    dayDatas.Remove(SelectedDay);
                }
                else
                {
                    // Если день не пустой, то надо проверить его наличие в коллекции
                    if (!dayDatas.Contains(SelectedDay))
                        // Если его нет, то добавить
                        dayDatas.Add(SelectedDay);
                 }
 
                // Замена выделенного дня запрошенным
                SelectedDay = day;
            }
        }
    }
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
11.03.2021, 22:28
cypoc, теперь понял.
Перепутал классы:
C#
51
52
53
                // Проверка наличия задач в выбранном дне
                // Если у всех отделов нет задач в выбранном дне.
                if (SelectedDay.TaskDepartment.All(dep => dep.TotalTasks == 0))
0
12.03.2021, 08:21

Не по теме:

Элд Хасп, проще наверное сесть и самому написать, чем объяснять каждую мелкую деталь

0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
12.03.2021, 10:34
Цитата Сообщение от Midian Посмотреть сообщение
проще наверное сесть и самому написать, чем объяснять каждую мелкую деталь
Конечно проще.
Но цель - научить.
1
0 / 0 / 0
Регистрация: 28.02.2020
Сообщений: 78
12.03.2021, 10:49  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Конечно проще.
Но цель - научить.
Вот прям спасибо!

Добавлено через 8 минут
Возможно, ошибочный пустой оператор
Закрытый член «DepartmentsTasksVM.SelectDay» не используется.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
12.03.2021, 11:36
Цитата Сообщение от cypoc Посмотреть сообщение
Возможно, ошибочный пустой оператор
Закрытый член «DepartmentsTasksVM.SelectDay» не используется.
К этому методу должны обращаться команды.
Вы их пока не задали.
См.: public RelayCommand ...DayCommand
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2021, 11:36

Реализовать многопоточное приложение согласно условию задачи, используя Visual Studio Ultimate 2012
1) Поток worker должен найти среднее значение нечетных элементов массива. 2) Поток main должен выполнить следующие действия: −...

Создать алгоритм в виде блок-схемы линейным выбором с обменом (сортировка выбором): 1. Найти наименьший (наибо
Создать алгоритм в виде блок-схемы при помощи линейный выбора с обменом (сортировка выбором): 1. Найти наименьший (наибольший) элемент,...

Отличие сортировки выбором от сортировки прямым выбором
Препод задала вопрос, на который я не могу найти инфу в инете, если знаете, подскажите. Но нужно сегодня, буду благодарен

Выбор решения для проекта! Приложение для Windows + приложение для Android или Web приложение?
Здравствуйте! Один мой знакомый, владелец мебельной фирмы, обратился ко мне с серьезным предложением. Ему необходимо разработать...

Перенос значений по условию, очистка значений по условию
Необходимо 2 макроса Макрос 1 - перенос. Копировать только значения из строки 14 в строку 2 только тех столбцов, для которых: вариант...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru