Y 軸が の値によって更新されている WPF ツールキットを使用してグラフを作成しようとしていますList()
。特定のインデックスを介して値にアクセスしようとしています。List()
現在、ではなくのインデックスにバインドすると、int
「従属値をプロットするのに適した軸がありません」というメッセージが表示されます。例外。
これが私がこれまでに持っているものです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()
ではなくa のインデックスにバインドするにはどうすればよいint
ですか?
編集
インデックスに名前を付けることでコード ビハインドからリスト内の特定の値を取得できましたがLineSeries
、チャートの作成時に複数の値が動的に生成されます。それぞれを a のインデックスにバインドしたいと思いList<int>()
ます。これは1秒ごとに再作成します。
MemoryStats
UI を更新するために使用する完全なメソッドを次に示します。LineSeries
すべてのY 値を単一の ByteCountに更新することで機能してint
いるため、現在、すべての行が同じように見えます。
public class MemorySample
{
public static MemorySample Generate(List<int> dataPoints)
{
return new MemorySample
{
ByteCount = dataPoints[0],
Timestamp = DateTime.Now
};
}
public int ByteCount { get; set; }
public DateTime Timestamp { get; set; }
}
LineSeries
もちろん、全部違うものにしたいです。LineSeries
各グラフの X 軸をTimeStamp
(すべて同じ TimeStampを持つように) したいと思います。さまざまなグラフLineSeries
の Y 軸の値はList()
、それぞれの個別のインデックスを使用して整数で更新されます。List()
型コンバーターを実装しようとしますが、いつどこでそれを行うべきか完全にはわかりません。
編集2
思い通りに動くようになりました!折れ線グラフで複数のシリーズを使用することに関して、この SO の質問から多くの助けが見つかりました。
型コンバーターも同様に機能するように見えるので、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
と、リストが返されます。次に、そのリストの項目がグラフに表示されます。