none
WPF Toolkitで散布図を描画する RRS feed

  • 質問

  • デバッグみたいな質問で申し訳ありませんが、アドバイス宜しくお願いします。

    質問
    WPF Toolkitのチャートコントロールの散布図で測定値の時間変動を表示したいが、折れ線が描画されない原因が分からない。

    ※アセンブリ名は"ChartTest"でビルドしています。

    [C#]

    using System;
    using System.Collections.Generic;
    using System.Windows;
    
    namespace ChartTest
    {
        /// <summary>
        /// MainWindow.xaml の相互作用ロジック
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
        }
    
        public class MyData
        {
            public MyData()
            {
                // Sample1およびSample2の測定時刻と測定値
                Items = new List<MyItem> 
                {
                    new MyItem{Time=new DateTime(2014,4,1,0,0,0),Sample1=10,Sample2=50},
                    new MyItem{Time=new DateTime(2014,4,1,0,30,0),Sample1=20,Sample2=60},
                    new MyItem{Time=new DateTime(2014,4,1,1,0,0),Sample1=30,Sample2=70},
                    new MyItem{Time=new DateTime(2014,4,1,1,30,0),Sample1=40,Sample2=80},
                    new MyItem{Time=new DateTime(2014,4,1,2,0,0),Sample1=50,Sample2=90},
                    new MyItem{Time=new DateTime(2014,4,1,2,30,0),Sample1=60,Sample2=100},
                    new MyItem{Time=new DateTime(2014,4,1,3,0,0),Sample1=70,Sample2=90},
                    new MyItem{Time=new DateTime(2014,4,1,3,30,0),Sample1=80,Sample2=80},
                    new MyItem{Time=new DateTime(2014,4,1,4,0,0),Sample1=90,Sample2=70},
                    new MyItem{Time=new DateTime(2014,4,1,4,30,0),Sample1=100,Sample2=60},
                    new MyItem{Time=new DateTime(2014,4,1,5,0,0),Sample1=110,Sample2=50}
    
                };
            }
            public List<MyItem> Items;
        }
    
        public class MyItem
        {
            public DateTime Time { get; set; }
            public float Sample1 { get; set; }
            public float Sample2 { get; set; }
        }
    }

    [XAML]

    <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
            x:Class="ChartTest.MainWindow"
            xmlns:my="clr-namespace:ChartTest"    
        Title="MainWindow" Height="350" Width="525">
        <StackPanel>
            <chartingToolkit:Chart Title="Sample1測定値の変化" Height="285">
                <chartingToolkit:Chart.DataContext>
                    <my:MyData />
                </chartingToolkit:Chart.DataContext>
                
                <chartingToolkit:ScatterSeries ItemsSource="{Binding Items}"
                                               Title="Title1"
                                               IndependentValuePath="Time"
                                               DependentValuePath="Sample1"
                                               />
                    
            </chartingToolkit:Chart>
        </StackPanel>
    </Window>


    C#開発者

    2014年10月24日 6:00

回答

  • バインドするためにはプロパティである必要があります。Itemsをフィールドではなく、プロパティとして定義して下さい。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク MicroVAX 2014年10月24日 7:16
    2014年10月24日 6:20
    モデレータ

すべての返信

  • バインドするためにはプロパティである必要があります。Itemsをフィールドではなく、プロパティとして定義して下さい。

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク MicroVAX 2014年10月24日 7:16
    2014年10月24日 6:20
    モデレータ
  • ご回答ありがとうございます。

    ご指摘の通りMyDataクラスを修正したところ意図通りの結果が得られました。

    誤 public List<MyItem> Items;       

    正 public List<MyItem> Items { get; set; }


    C#開発者

    2014年10月24日 7:16