當新點來自後端時,我使用數據源綁定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