Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для ArtSmm
32 / 32 / 2
Регистрация: 07.01.2016
Сообщений: 488

Не понимаю как правильно забиндить график

16.10.2021, 14:21. Показов 3671. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
xaml файл
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<Window x:Class="CalculationEfficiency.Chart.StuffChart"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:CalculationEfficiency.Chart"
        xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" xmlns:calculationefficiency="clr-namespace:CalculationEfficiency"
        mc:Ignorable="d"
        Title="График по сотрудникам" Height="450" Width="800">
    <Grid>
        <lvc:CartesianChart d:DataContext="{d:DesignInstance calculationefficiency:ResultCalculationViewItem}" Series="{Binding SeriesCollection}"/>
    </Grid>
</Window>
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
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
71
72
73
74
75
76
77
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using Microsoft.Win32;
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.Shapes;
using LiveCharts;
using LiveCharts.Wpf;
using System.ComponentModel;
 
namespace CalculationEfficiency.Chart
{
    /// <summary>
    /// Логика взаимодействия для StuffChart.xaml
    /// </summary>
    public partial class StuffChart : Window
    {
        public StuffChart()
        {
            InitializeComponent();
            this.DataContext = new GraphData();
        }
 
        public class GraphData
        {
            public SeriesCollection SeriesCollection { set; get; }
 
            public GraphData()
            {
                this.LoadData();
            }
 
            private void LoadData()
            {
                const int reportId = 16;
 
                var data = LoadDataFromServer(reportId);
 
                this.SeriesCollection = new SeriesCollection
            {
                new LineSeries
                {
                    Values = new ChartValues<double>(data.Take(4)),
                },
                new LineSeries
                {
                    Values = new ChartValues<double>(data.Skip(4).Take(4)),
                },
            };
            }
 
            // Тут чтение данных из базы, какой-нибудь List<ResultItem>
            private List<double> LoadDataFromServer(int reportId)
            {
                //return new List<double> { 1, 3, 5, 7, 8, 6, 2, 4 };
                var dbResult = DatabaseProvider.GetCalculationResultItem(reportId);
 
                var result = new List<double>();
 
                foreach(var item in dbResult)
                {
                    result.Add(Convert.ToDouble(item.FinalProfit));
                }
 
                return result;
            }
        }
    }
}
Почему-то не видит SeriesCollection - не могу понять почему..
Что я могу не так делать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2021, 14:21
Ответы с готовыми решениями:

Как правильно забиндить к форме объект
Привет! Например есть простой класс class Client{ public string Name; public string Phone; } и предположим я...

WPF | Как правильно забиндить PasswordBox?
Всем доброго дня. Есть кто сталкивался с passwordbox , и делал что то похожие. Xamp &lt;TextBox Text=&quot;{Binding...

Как правильно забиндить сортировку по ключу
имеется вот такой контейнер vector&lt;map&lt;string,int&gt;&gt; conteyner; как правильно забиндить сортировку по ключу map&lt;string,int&gt; ...

28
 Аватар для ArtSmm
32 / 32 / 2
Регистрация: 07.01.2016
Сообщений: 488
21.10.2021, 22:40  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
рунтайм
Где протестировать? не понял слово. RealTime ?

Добавлено через 50 секунд
Цитата Сообщение от Элд Хасп Посмотреть сообщение
сразу с Окна с графиком
как это? не очень понял. Приложение первое, да

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
я не понял
написал в личку - как попасть дальше окна авторизации
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
21.10.2021, 22:44
Цитата Сообщение от ArtSmm Посмотреть сообщение
как это? не очень понял. Приложение первое, да
Если в App.xaml задать старт StartupUri="Chart/Window3.xaml", то будет сразу выведено окно Window3.
И график на нём присутсвует.

Добавлено через 1 минуту
Цитата Сообщение от ArtSmm Посмотреть сообщение
Где протестировать? не понял слово. RealTime ?
В смысле "во время исполнения" - "run time".

Добавлено через 2 минуты
Цитата Сообщение от ArtSmm Посмотреть сообщение
написал в личку - как попасть дальше окна авторизации
Я не получал.
Проверьте отправку.
1
 Аватар для ArtSmm
32 / 32 / 2
Регистрация: 07.01.2016
Сообщений: 488
21.10.2021, 22:52  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Проверьте отправку
Проверяйте, отправил в теме с пометкой re:
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
21.10.2021, 23:17
ArtSmm, я не нашёл где у вас в приложении создаётся экземпляр Window3 для показа.
Нет ни одной ссылки на этот тип.

Добавлено через 1 минуту
Для проверки я исключил Window3 из проекта.
Нет ни одной ошибки.
Значит точно: вы нигде его не показываете.
1
 Аватар для ArtSmm
32 / 32 / 2
Регистрация: 07.01.2016
Сообщений: 488
22.10.2021, 23:48  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
создаётся экземпляр Window3
Основной код находится в файле GraphData.cs в папке Chart

Чтобы вызвать, задумка была такая:
Создаем окно Window3.xaml, в Window3.cs только инициализация окна
в xaml файле сейчас так написал:
XML
1
2
3
4
5
6
7
<Window.DataContext>
        <local:GraphData/>
    </Window.DataContext>
    <Grid>
        <lvc:CartesianChart Series="{Binding SeriesCollection}" />
        <TextBlock Text="{Binding SeriesCollection[0].Count}"/>
    </Grid>
тут все ок - график выводится

Вызов графика должен быть в файле: CalculationTableView.xaml по ctrl+f ищем слово "График", вызов окна с графиком должен быть тут
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
23.10.2021, 12:47
ArtSmm, а как попасть на вашу страницу CalculationTableView при запуске приложения?
По коду XAML и CB этой страницы у вас нет Контекста Данных и к чем вы создаёте тогда привязки?

Добавлено через 4 минуты
Цитата Сообщение от ArtSmm Посмотреть сообщение
в файле: CalculationTableView.xaml
Нашёл в CB:
C#
36
37
38
39
40
        public CalculationTableView()
        {
            InitializeComponent();
            this.DataContext = this;
        }
Назвать подобное можно только "Как создать себе проблемы на ровном месте".
Вынесите всё в нормальный Контекст Данных и задайте его в XAML, как показали вам для Windows3.
0
 Аватар для ArtSmm
32 / 32 / 2
Регистрация: 07.01.2016
Сообщений: 488
23.10.2021, 13:49  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
попасть на вашу страницу
попасть можно так: прошли окно авторизации - результаты расчетов, открыть правой кнопкой имеющийся расчет, затем в нем нажать на "+", там будет вкладка "график"
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
23.10.2021, 16:42
Цитата Сообщение от ArtSmm Посмотреть сообщение
попасть можно так: прошли окно авторизации - результаты расчетов, открыть правой кнопкой имеющийся расчет, затем в нем нажать на "+", там будет вкладка "график"
Вот все эти геморрои из-за того вы, что не используете типичные для WPF методы работы.
Должно работать (в дизайнере) так: установили в XAML курсор на привязываемое свойство (в данном случае это CalculationEfficiency.Chart.Window3), нажали F12 и сразу попали на объявление этого свойства.
Если так не работает, значит проект КРИВОЙ и в нём будет масса проблем проявляющихся то тут, то там.

Сейчас для отладки приходится запускать приложение.
Потом в панели отладки выбирать "Выбрать элемент", после этого выбирать график.
Происходит фокус в Окне "Динамическое Визуальное Дерево", там переходит к элементу объявленному в коде, выбирать его и смотреть значения его свойств в Окне "Динамический обозреватель свойств".

Вот вы умеете всем эти пользоваться?
Очень маловероятно.
Так зачем делаете всю реализацию через жопу очень нетипично?
Чтобы жизнь малиной не казалась?

ПОЛНОСТЬЮ очистите Code Behind всех ваших окон и страниц.
Ничего кроме вызова InitializeComponent() в них быть не должно.
Вообще, пока не наберёте достаточных знаний и опыта, забудьте о существовании файлов "*.xaml.cs" и никогда их даже не открывайте.


Конкретно в данном случае, я докопался до того, что во время исполнения в Контексте Данных элемента lvc:CartesianChart находится тип ResultItem.
У этого типа нет свойства CalculationEfficiency.Chart.Window3, которое вы хотите привязать к Series.

Почему там (в Контексте Данных) этот тип - разобраться в вашем коде очень сложно.
Для меня проще выкинуть его в корзину и сделать заново, чем исправлять его.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
23.10.2021, 21:46
ArtSmm, пытаюсь разобраться и просто офигеваю с вашего кода.
Файл DatabaseProvider.cs содержит 10 !!! классов и более 1300 строк!!! Зачем?!
Вы что этим экономите?
И в половине классов ещё и СВОЯ ИНДИВИДУАЛЬНАЯ реализация INPC.... Ужас!!!

Что касается вопроса темы, то, насколько разобрался, вам нужно в класс ResultItem добавить свойство с SeriesCollection, которое будет вычисляться исходя из других данных текущего ResultItem.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2021, 21:46

Как правильно забиндить List<string> к ComboBox
есть класс Clfs, в котором есть private List&lt;string&gt; _listProjectName = new List&lt;string&gt;(); public List&lt;string&gt;...

WPF: как правильно забиндить свойство контрола?
Делаю простейщий 'UserControl' с одним тестовым полем. SampleUserControl.xaml &lt;TextBlock Text=&quot;{Binding Path=CurrentValue}&quot; /&gt; ...

Не понимаю, как построить график
Нужно построить обычный график. Представим, что левый столбец - x, а правый - y. Как уже не пробовал, всё время строит то дофига точек,...

Не понимаю как правильно(
Найти сумму ряда с точностью eps общий член которого равен an=n!/2n!. Точность считается достигнутой, если следующий член...

не понимаю как построить график, объясните пож-та
На шар, лежащий на гладкой горизонтальной поверхности, налетает другой шар такого же радиуса, движущийся горизонтально. Между шарами...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru