Как обновить визуальное представление геометрического пути на Canvas C# WPF?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как обновить визуальное представление геометрического пути на Canvas C# WPF?

Сообщение Anonymous »

Я хочу сделать интерактивное построение графиков функций для заданных точек. Для рисования я использую Canvas и Path, для манипуляций над точками использую DataGrid и ObservableCollection. Проблема в том, что когда я меняю точки, Canvas не перерисовывается.
UI:






































































Converter={StaticResource DataToPathConverter}}"
Stroke="Black"/>







Класс данных:
using System.Collections.ObjectModel;

namespace WpfAppCharts.Models
{
public class Data
{
enum Types { LINES, SPLINE }
public string Name { get; set; }
public int Type { get; set; }
public ObservableCollection Records { get; set; }
public Data()
{
this.Name = "No name";
this.Type = (int)Types.SPLINE;
this.Records = new ObservableCollection();
}
}
}

Класс записи:
namespace WpfAppCharts.Models
{
public class Record
{
public double X { get; set; }
public double Y { get; set; }
public Record(double X, double Y)
{
this.X = X;
this.Y = Y;
}
}
}

ViewModel:
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using WpfAppCharts.Models;

namespace WpfAppCharts.ViewModels
{
public class MainWindowViewModel : INotifyPropertyChanged
{
public ObservableCollection Datas { get; set; }
public MainWindowViewModel()
{
Datas = new ObservableCollection();

Datas.Add(new Data());
Datas[0].Records.Add(new Record(0, 0));
Datas[0].Records.Add(new Record(20, 0));
Datas[0].Records.Add(new Record(45, -47));
Datas[0].Records.Add(new Record(53, 335));
Datas[0].Records.Add(new Record(57, 26));
Datas[0].Records.Add(new Record(62, 387));
Datas[0].Records.Add(new Record(74, 104));
Datas[0].Records.Add(new Record(89, 0));
Datas[0].Records.Add(new Record(95, 100));
Datas[0].Records.Add(new Record(100, 0));
Datas[0].Records.Add(new Record(115, 100));
Datas[0].Records.Add(new Record(120, 200));
Datas[0].Records.Add(new Record(130, 300));
Datas[0].Records.Add(new Record(135, 300));
Datas[0].Records.Add(new Record(140, 200));
Datas[0].Records.Add(new Record(145, 50));
Datas[0].Records.Add(new Record(150, 50));
}
public event PropertyChangedEventHandler? PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}

Конвертер:
using System.Globalization;
using System.Windows.Data;
using WpfAppCharts.Models;

namespace WpfAppCharts.Converters
{
class DataToPathConverter : IValueConverter
{
enum Types { LINES, SPLINE }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Data data = (Data)value;
string result = String.Format("M {0},{1}", data.Records[0].X, data.Records[0].Y);
switch ((int)data.Type)
{
case (int)Types.SPLINE:
case (int)Types.LINES:
for (int i = 1; i < data.Records.Count; i++)
result += String.Format("L {0},{1}", data.Records.X,
data.Records.Y);
break;
}
return result;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -sharp-wpf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как обновить визуальное представление геометрического пути на Canvas C# WPF?
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Преобразование дерева решений из текста 2, визуальное представление
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Библиотека Java для анализа геометрического объекта пространственного объекта
    Anonymous » » в форуме JAVA
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Реплицируйте деформацию сетки геометрического преобразования (например, в Photoshop) в Python
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • HTML5 Canvas: как рисовать на Canvas с сервера Java или C++?
    Anonymous » » в форуме JAVA
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»