Обновить таблицу отображения динамических данных WPF D3

Я привязываю LineGraph к источнику данных, когда новые точки поступают из бэкэнд, проблема в том, что сетка не обновлена, вы можете сделать plotter.FitToView(), чтобы получить ее для обновления, но которая также подходит для нового графика в окне плоттера, это очень разобравшись, если вы увеличили масштаб и подкрасили его до определенной точки на графике, потому что он будет zooom, чтобы соответствовать графику на диаграмме... Итак, есть ли способ обновить его после привязки данных (вы думаете, что обновленная информация будет обновлена it+..

Я также могу рассмотреть изменение диаграммы WPF enterily у меня есть одно требование и его, что вы можете определить перетаскиваемые точки на диаграмме

3 ответа

Лучший способ, который я нашел для этого, состоит в том, чтобы иметь Свойство в вашем коде, которое представляет DataSource, и привязать его DataSource к этому свойству. Внесите свой код за реализацию INotifyPropertyChanged и вызовите OnPropertyChanged каждый раз, когда вы обновляете или повторно назначаете свой источник данных. Это заставит плоттер наблюдать привязку и перерисовывать график.

Пример:

EnumerableDataSource<point> m_d3DataSource;
public EnumerableDataSource<point> D3DataSource {
get {
 return m_d3DataSource;
}
set { 
 //you can set your mapping inside the set block as well 
 m_d3DataSource = value;
 OnPropertyChanged("D3DataSource");
}
} 

protected void OnPropertyChanged(PropertyChangedEventArgs e) {
 PropertyChangedEventHandler handler = PropertyChanged;
 if (handler != null) {
 handler(this, e);
 }
} 

protected void OnPropertyChanged(string propertyName) {
 OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
} 
</point></point>


Вы пытались переназначить сбор данных при добавлении новых данных? Я заметил, что это необходимо для обновления моего графика. Например, после добавления новых объектов в мою коллекцию я бы использовал следующее:

DataCollection = new ObservableCollection<dataobject>(DataCollection);
</dataobject>

Это начало работать, и я подумал, что это связано с тем, что диаграмма только ответила на OnPropertyChanged, а не OnCollectionChanged, или что-то в этом роде. Тем не менее, линия болезненно бессмысленна и замедляет отображение большого количества данных.

Изменение: это включает в себя ответ Джейсона выше, чтобы уведомить об изменениях!


Интерфейс с графикой DF WPF полностью программный, т.е. Вам нужно "нажимать" обновления, а не использовать привязку для автоматического обновления пользовательского интерфейса. В качестве альтернативы, возможно, рассмотрим диаграмму Visiblox, здесь есть запись в блоге, в которой описывается, как перетаскивать datapoints по мере необходимости:

http://www.visiblox.com/blog/2011/11/creating-a-custom-behaviour-part-3-the-finale

Раскрытие информации: Я работаю в компании, которая создала графики Visiblox.

licensed under cc by-sa 3.0 with attribution.