2016-07-18 5 views
2

ObservableCollectionを使用していくつかの点を表示する方法はわかりません。これは私のコードです:ObservableCollectionを使用した動的データ表示

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0" 
    Title="MainWindow" Height="350" Width="525"> 

<Grid> 

    <d3:ChartPlotter x:Name="Plotter" Margin="100,5,0,0"> 
     <d3:LineGraph /> 
    </d3:ChartPlotter> 

    <Button x:Name="button" 
      Content="Load Graph" 
      HorizontalAlignment="Left" 
      Margin="10,35,0,0" 
      VerticalAlignment="Top" 
      Width="70" 
      Height="45" Click="button_Click"/> 

</Grid> 

public partial class MainWindow : Window 
{ 
    public ObservableCollection<Point> Data { get; set; } 

    public MainWindow() 
    { 
     InitializeComponent(); 

     Data = new ObservableCollection<Point>(); 
     Plotter.DataContext = this; 
    } 

    private void button_Click(object sender, RoutedEventArgs e) 
    { 
     double[] my_array = new double[10]; 

     for (int i = 0; i < my_array.Length; i++) 
     { 
      my_array[i] = Math.Sin(i); 
      Data.Add(new Point(i, my_array[i])); 
     } 
    } 
} 

誰もがこれを行う方法を見せてもらえますか?おそらくItemsSource = "Data"のようなものをXAMLに追加する必要がありますが、それを見つけることができませんでした。 ありがとうございます。

+0

あなたは、リストビューにこれを追加しようとしていますか? –

+0

そう、そうだね:) –

答えて

2

使用Plotter.AddLineGraph(Data);

using Microsoft.Research.DynamicDataDisplay; 
using Microsoft.Research.DynamicDataDisplay.DataSources;  

private void button_Click(object sender, RoutedEventArgs e) 
      { 
       double[] my_array = new double[10]; 

       for (int i = 0; i < my_array.Length; i++) 
       { 
        my_array[i] = Math.Sin(i); 
        Data.Collection.Add(new Point(i, my_array[i])); 
       } 
       Plotter.AddLineGraph(Data); 
      } 

enter image description here

EDIT:あなたが使用する必要はありませんので、はここで、MVVMを使用して私の完全な作業コードですAddLineGraph

XAML:

<Window x:Class="WpfApplication1.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:WpfApplication1" 
    xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> 
<Grid> 
    <d3:ChartPlotter> 
     <d3:LineGraph DataSource="{Binding Data}"></d3:LineGraph> 
    </d3:ChartPlotter> 
</Grid> 

CS:

public partial class MainWindow : Window 
    { 
     MyViewModel viewModel; 

     public MainWindow() 
     { 
      InitializeComponent(); 

      viewModel = new MyViewModel(); 
      DataContext = viewModel; 
     } 

     private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      double[] my_array = new double[10]; 

      for (int i = 0; i < my_array.Length; i++) 
      { 
       my_array[i] = Math.Sin(i); 
       viewModel.Data.Collection.Add(new Point(i, my_array[i])); 
      } 
     } 
    } 

のViewModel:

using Microsoft.Research.DynamicDataDisplay.DataSources; 

public class MyViewModel 
    { 
     public ObservableDataSource<Point> Data { get; set; } 

     public MyViewModel() 
     { 
      Data = new ObservableDataSource<Point>(); 
     } 
    } 
+0

Data.Collectionが存在せず、このNuGetパッケージにPlotter.AddLineChart(オブジェクトデータ)のようなものがあります。別のバージョンのd3を使用していますか? –

+0

バージョンは0.3.0.0です – jsanalytics

+0

さて、v0.4.0があります。私はhttps://dynamicdatadisplay.codeplex.com/からあなたのバージョンをダウンロードしましたが、私はそれらのフォルダ(ソース、DynamicDadaDisplay、DDD.Coastlineなど)と何をすべきか分かりませんでした。プロジェクトに追加するにはどうすればいいですか? –

0

私は、XAMLで宣言された名前空間を知らない:

xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0" 

を、私はいくつかの提案を追加することができます。クラスPointが座標値XとYをパブリックプロパティとして公開していることを確認します。その後、コントロールChartPlotterがXAMLバインディングをサポートしていることを確認する必要があります。

+0

さて、WPF Toolkitのチャートを使ってこのことを行った。私は、ポイントがOKだとほとんど確信しています。 2番目のものについて:私はここで見つけました:http://www.mesta-automation.com/real-time-line-charts-with-wpf-and-dynamic-data-display/いくつかの例ですが、問題はすべてではないコマンドは私のバージョンのd3で動作します(例えばplotter.AddLineGraph())。私のものはNuGetパッケージから来ます。私も経験したことがないので、私は尋ねている。 :) –

関連する問題