当新点来自后端时,我使用数据源绑定LineGraph,问题是网格未刷新,您可以执行plotter.FitToView()以使其刷新,但也是如此将新图形拟合到绘图仪窗口,如果您已放大并平移到图表上的特定点,因为它会放大以适合图表上的图形,那么这是非常令人反感的。那么,有没有办法刷新它数据绑定后(你认为一个数据绑定将刷新+ ..刷新WPF D3动态数据显示图表
我也可以考虑改变WPF图表enterily我有一个要求,它可以在图表
当新点来自后端时,我使用数据源绑定LineGraph,问题是网格未刷新,您可以执行plotter.FitToView()以使其刷新,但也是如此将新图形拟合到绘图仪窗口,如果您已放大并平移到图表上的特定点,因为它会放大以适合图表上的图形,那么这是非常令人反感的。那么,有没有办法刷新它数据绑定后(你认为一个数据绑定将刷新+ ..刷新WPF D3动态数据显示图表
我也可以考虑改变WPF图表enterily我有一个要求,它可以在图表
到WPF的接口上定义了可拖动点D3图表完全是程序化的,即您必须“推送”更新,而不是使用绑定来自动刷新UI。作为替代,或许考虑Visiblox图,有一个博客张贴在这里介绍如何使数据点拖动,你需要:
http://www.visiblox.com/blog/2011/11/creating-a-custom-behaviour-part-3-the-finale
披露:我为创建Visiblox图表公司工作。
我发现要做到这一点的最好方法是在代码后面有一个代表DataSource并将图表的DataSource绑定到该属性的Property。每次更新或重新分配数据源时,让您的代码实现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));
}
是的,我是如何做到的,但我使用Caliburn.Micro。什么也没有发生,你需要使用FitToView()来刷新点 – Anders 2012-11-19 14:20:26
您是否尝试过重新分配数据收集,当你添加新的数据?我注意到这是更新我的图表所必需的。例如,添加新对象到我的收藏后,我会使用这样的:
DataCollection = new ObservableCollection<DataObject>(DataCollection);
这开始工作,而且我认为这是因为该图仅回应OnPropertyChanged而不是OnCollectionChanged,或诸如此类的话。尽管如此,这条线很痛苦,毫无意义,并且会减慢大量数据的显示速度。
编辑:这是包括杰森的回答上面通知的变化!
它为一个开源项目,不能使用付费产品:/ – Anders 2012-01-05 00:05:58
我决定给Visiblox一个机会,因为它的数据库非常多。我看了一下这个例子并复制了MovePointBehaviour代码...它工作正常。但是我需要捕捉点的变化,以便我的业务逻辑可以对此做出反应,最好的办法是什么? – Anders 2012-01-05 13:59:37