Как обрабатывать Series MouseDown в OxyPLot.WPF способом MVVM?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как обрабатывать Series MouseDown в OxyPLot.WPF способом MVVM?

Сообщение Anonymous »

Я использую OxyPlot для рисования диаграмм в своем проекте .NET WPF. MVVM для меня новая вещь, поэтому я не знаю, как ему следовать в этой ситуации.
  • Есть окно (основное представление), содержащее PlotView. .
  • Имеется модель, содержащая коллекцию объектов. Каждый объект соответствует графику на моем графике.
  • Существует модель представления, которая создает LineSeries и помещает ее в PlotModel.
Проблема в том, что я хочу, чтобы каждый график был кликабельным. После щелчка мыши открывается другое окно с более подробной информацией о соответствующем объекте. Моя текущая модель представления выглядит примерно так:

Код: Выделить всё

public class MainViewModel : BaseViewModel
{
public PlotModel MyPlotModel { get; set; }

private MyModel model;

public MainViewModel()
{
model = new MyModel();
DrawGraphs();
}

private void DrawGraphs()
{
List myObjects = model.GetObjects();

foreach (var obj in myObjects)
{
var s = new LineSeries();

// Setting up datapoints and appearance of the graph

s.MouseDown += (object sender, OxyMouseDownEventArgs e) =>
{
var view = new ObjectView(); // A view with full information of this specific object
view.DataContext = new ObjectViewModel(obj); // View model uses the object as a parameter to do bindings for new view
view.ShowDialog();
};
MyPlotModel.Series.Add(s);
}

OnPropertyChanged("MyPlotModel");
}
}
MouseDown можно настроить только при создании серии, потому что мне нужно знать конкретный объект из моей модели, который соответствует этому графику.
Это работает меня устраивает, однако я сомневаюсь, что реализация соответствует MVVM. Модель представления не должна иметь возможности создавать новые представления. Но я не могу придумать лучшего решения. Есть ли более элегантный и MVVM-способ сделать это?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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