for WPF developers
棒グラフを表示するためのコントロールです。
ページ内リンク
 BarGraph コントロールは、BarGraphItem クラスのコレクションをデータとする棒グラフを描画します。
棒グラフを表示する XAML サンプルプログラムを下記コードに示します。
<YK:Window x:Class="Section4_2.Views.MainView"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           xmlns:YK="clr-namespace:YKToolkit.Controls;assembly=YKToolkit.Controls"
           xmlns:sys="clr-namespace:System;assembly=mscorlib"
           Title="MainView" Height="400" Width="600"
           WindowStartupLocation="CenterScreen">
    <Grid>
        <YK:BarGraph Title="サンプルグラフ"
                     YLabel="データ数">
            <YK:BarGraph.ItemsSource>
                <x:Array Type="{x:Type YK:BarGraphItem}">
                    <YK:BarGraphItem Title="Data1" Fill="Coral" Stroke="Coral" Values="{Binding Data1}" />
                    <YK:BarGraphItem Title="Data2" Fill="Cyan" Stroke="Cyan" Values="{Binding Data2}" />
                </x:Array>
            </YK:BarGraph.ItemsSource>
            <YK:BarGraph.XAxisItemsSource>
                <x:Array Type="{x:Type sys:String}">
                    <sys:String>みかん</sys:String>
                    <sys:String>りんご</sys:String>
                </x:Array>
            </YK:BarGraph.XAxisItemsSource>
            <YK:BarGraph.XAxisItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" TextAlignment="Center" />
                </DataTemplate>
            </YK:BarGraph.XAxisItemTemplate>
            <YK:BarGraph.BorderBrush>
                <SolidColorBrush Color="{DynamicResource BorderColor}" />
            </YK:BarGraph.BorderBrush>
            <YK:BarGraph.Background>
                <SolidColorBrush Color="{DynamicResource WindowColor}" />
            </YK:BarGraph.Background>
        </YK:BarGraph>
    </Grid>
</YK:Window>
 上記サンプルでは、グラフデータである BarGraphItem に対して、Title プロパティや Fill プロパティは XAML から直接指定していますが、
Values プロパティについてはデータバインディングの機能を使用することで、ViewModel から値をもらうようにしています。
このように、表示に関するプロパティは XAML から、データに関するプロパティは ViewModel、引いては Model から参照するようにすることができます。
次に、上記サンプルに対する ViewModel のサンプルコードを示します。
namespace Section4_2.ViewModels
{
    using System.Collections;
    using System.Linq;
    using YKToolkit.Bindings;
    public class MainViewModel : NotificationObject
    {
        /// <summary>
        /// 新しいインスタンスを生成します。
        /// </summary>
        public MainViewModel()
        {
            SetRandomData();
        }
        #region 公開プロパティ
        private IEnumerable data1;
        /// <summary>
        /// 1 つ目のサンプルデータのデータ列を取得または設定します。
        /// </summary>
        public IEnumerable Data1
        {
            get { return data1; }
            set { SetProperty(ref data1, value); }
        }
        private IEnumerable data2;
        /// <summary>
        /// 2 つ目のサンプルデータのデータ列を取得または設定します。
        /// </summary>
        public IEnumerable Data2
        {
            get { return data2; }
            set { SetProperty(ref data2, value); }
        }
        #endregion 公開プロパティ
        /// <summary>
        /// ランダムなグラフデータを生成します。
        /// </summary>
        private void SetRandomData()
        {
            var rnd = new System.Random();
            Data1 = Enumerable.Range(0, 3).Select(_ => rnd.Next(20, 80));
            Data2 = Enumerable.Range(0, 3).Select(_ => rnd.Next(20, 80));
        }
    }
}
 
Designed by CSS.Design Sample