我正在嘗試使用WPF工具包創建一個圖表,其中Y軸正在通過List()
中的值進行更新。我試圖通過特定的索引訪問該值。目前,綁定到List()
索引而不是int
會創建一個「沒有合適的座標軸可用於繪製相關值」。例外。如何將圖表的軸綁定到List()的特定索引?
這是我到目前爲止,注意我試圖讓DependentValuePath
訪問索引:
<Charting:LineSeries VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=MemoryStats}"
IndependentValuePath="Timestamp"
DependentValuePath="ByteCount[0]"
Title="Data Points">
這是MemoryStats
值在後面的代碼包括:
public List<int> ByteCount { get; set; }
public DateTime Timestamp { get; set; }
的當XAML中的LineSeries具有屬性DependentValuePath="ByteCount"
並且代碼隱藏使用簡單的int時,圖表工作正常:
public int ByteCount { get; set; }
public DateTime Timestamp { get; set; }
我該如何獲得它綁定到List()
索引而不是int
?
編輯
我已經能夠通過命名其索引搶在從後面的代碼列表中的特定值,但會有多個動態生成LineSeries
創建圖表時。我想將每個綁定到一個List<int>()
的索引,我每秒鐘都會重新創建索引。
以下是MemoryStats
用於更新UI的完整方法。它正在通過將所有的LineSeries
Y值更新爲單個ByteCount int
,所以目前所有的行看起來都是一樣的。我想所有的LineSeries
都不一樣。我想讓圖表的每個LineSeries
的X軸爲TimeStamp
(因此它們都具有相同的時間戳),並且各個LineSeries
的Y軸值由整數更新爲List()
,每個整數都使用單獨的List()
我會嘗試實現一個類型轉換器,但我不完全確定何時/在哪裏做到這一點。
EDIT 2
我得到它的工作我想它的方式!我發現很多幫助from this S.O. question regarding using multiple series in a line chart.
看起來好像一個類型轉換器也能工作,所以Shimrod已經得到了問題的答案。但是,我最終做的是將LineSeries的ItemSource
綁定到索引,然後檢索該索引內容的數據。
所以,這裏的LineSeries
的樣子:
<Charting:LineSeries VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
ItemsSource="{Binding [0]}"
IndependentValuePath="X"
DependentValuePath="Y"
Title="Data Points">
</Charting:LineSeries>
注意在ItemSource
指數結合。在後面的代碼中,我將控件的DataContext
設置爲ObservableCollection
,該對象保留從「IList」繼承的對象(您可以使用任何對象),並且該對象保存包含屬性X
和Y
屬性。
public ObservableCollection<InheritsFromIList<ObjectWithXandYProperties>> VariableDataContextIsSetTo { get; set; }
訪問ObservableCollection
的具體指標將返回列表。然後,該列表中的項目顯示在圖表上。
我不太熟悉在哪裏實現一個類型轉換器,但是我會放棄它,我會用更多的細節更新我的問題,如果有幫助的話。沒有正確地實施解決方案,但現在我會把它記錄下來,以我自己的經驗不足,並會接受答案。 – jporcenaluk
我會添加如何使用它的信息,如果你想 – Shimrod
我添加了一個示例代碼,不猶豫,告訴我,如果你需要更多的信息! – Shimrod