ComponentOne Controls

C1Chart

Example of Audiogram using C1Chart:

<Window...
    xmlns:c1chart="http://schemas.componentone.com/xaml/c1chart"    
    xmlns:c1ext="http://schemas.componentone.com/wpf/C1Extended"
    xmlns:c1="http://schemas.componentone.com/wpf/Basic"  
    xmlns:c1grid="http://schemas.componentone.com/wpf/C1DataGrid" 
    >
...
 
<Border Background="White" BorderBrush="LightGray" BorderThickness="2" CornerRadius="10,10,10,10">
	<c1chart:C1Chart Name="chartAudiogramBinaural" ChartType="LineSymbolsSmoothed" Margin="5">
		<c1chart:C1Chart.View>
			<c1chart:ChartView>
				<c1chart:ChartView.AxisX>
					<!--<c1chart:Axis Max="9" Min="0" MajorUnit="1" MajorGridStroke="DarkGray" LogBase="10">-->
					<c1chart:Axis Min=".1" Max="10" MajorUnit="1" MajorGridStroke="Transparent" MinorUnit=".250" LogBase="10" MajorTickThickness="1" MinorTickThickness="0">
						<c1chart:Axis.Title>
							<TextBlock Foreground="Crimson" Text="Frequency (Hz)" TextAlignment="Center" />
						</c1chart:Axis.Title>
					</c1chart:Axis>
				</c1chart:ChartView.AxisX>
				<c1chart:ChartView.AxisY>
					<c1chart:Axis AutoMax="False" AutoMin="False" MajorUnit="20" Max="125" Min="-10" MajorGridStroke="LightGray" Reversed="True">
						<c1chart:Axis.Title>
							<TextBlock Foreground="Crimson" Text="Hearing Level (dB)" TextAlignment="Center" />
						</c1chart:Axis.Title>
					</c1chart:Axis>
				</c1chart:ChartView.AxisY>
			</c1chart:ChartView>
		</c1chart:C1Chart.View>
		<c1chart:C1Chart.Data>
			<c1chart:ChartData>
				<!--<c1chart:ChartData.ItemNames>100 250 500 750 1k . 1.5k . 2k . . . . . . . 4k 8k . 10k</c1chart:ChartData.ItemNames>-->
				<!--<c1chart:ChartData.ItemNames>125 250 500 1k 2k 4k 8k</c1chart:ChartData.ItemNames>-->
				<c1chart:ChartData.ItemNames>250 1k 2k . 4k . 6k . 8k</c1chart:ChartData.ItemNames>
				<!--<c1chart:DataSeries ConnectionFill="Blue" Label="Left" SymbolFill="White" SymbolMarker="DiagonalCross" SymbolStroke="Blue" Values="20 22 19 24 25 65 85 55 55 45" />-->
				<!--<c1chart:DataSeries ConnectionFill="Red" Label="Right" SymbolFill="White" SymbolStroke="Red" Values="8 12 10 12 15 45 45 55 35 35" />-->
				<!--<c1chart:DataSeries ChartType="LineSmoothed" ConnectionFill="Green" Label="Sample" SymbolFill="White" SymbolStroke="Red" Values="40 100 20 20 20 20 40 40 40 40" />-->
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="Red" 
									  Label="Right" SymbolMarker="Dot" SymbolFill="White" SymbolStroke="Red"
									  Values="10 15 10 15 15 45 45 45 35 35"
									  XValues=".250 .500 .750 1.0 1.5 2.0 3.0 4.0 6.0 8.0"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="Blue" 
									  Label="Left" SymbolMarker="DiagonalCross" SymbolFill="White" SymbolStroke="Blue"
									  Values="40 40 NaN 50 55 65 65 85 65 55 45"
									  XValues=".125 .250 .500 .750 1.0 1.5 2.0 3.0 4.0 6.0 8.0"/>
									  <!--Values="0.25,20 0.5,35 0.75,30 1.0,35 1.5,35 2.0,45 3.0,45 4.0,55 6.0,35 8.0,35" />-->
									  <!--AxisX="0.250 0.500 0.750 1.0 1.5 2 3 4 6 8" AxisY="20 25 10 15 15 45 45 55 35 35" />-->
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8"
									  Values="-10 130"
									  XValues=".25 .25"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8"
									  Values="-10 130"
									  XValues=".5 .5"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8" ConnectionStrokeThickness="0.5"
									  Values="-10 130"
									  XValues=".750 .750"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8"
									  Values="-10 130"
									  XValues="1 1"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8" ConnectionStrokeThickness="0.5"
									  Values="-10 130"
									  XValues="1.5 1.5"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8"
									  Values="-10 130"
									  XValues="2 2"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8" ConnectionStrokeThickness="0.5"
									  Values="-10 130"
									  XValues="3 3"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8"
									  Values="-10 130"
									  XValues="4 4"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8" ConnectionStrokeThickness="0.5"
									  Values="-10 130"
									  XValues="6 6"/>
				<c1chart:XYDataSeries ChartType="Line" ConnectionFill="LightGray" 
									  Label="Left" SymbolMarker="None" ConnectionStrokeDashes=".8"
									  Values="-10 130"
									  XValues="8 8"/>
			</c1chart:ChartData>
		</c1chart:C1Chart.Data>
		<c1chart:C1ChartLegend DockPanel.Dock="Right" Visibility="Collapsed" />
		<!--<TextBlock Panel.ZIndex="5" Margin="35,160,0,0">250</TextBlock>
		<TextBlock Panel.ZIndex="5" Margin="65,160,0,0">500</TextBlock>-->
	</c1chart:C1Chart>
</Border>

Example of Fitting Chart:

<Border Name="brdAudioChartHeaderRight" Grid.Row="0" CornerRadius="10,10,0,0">
			<Border.Background>
				<ImageBrush ImageSource="/images/backgrounds/bg-toolbar-red.jpg" />
			</Border.Background>
		</Border>
		<c1chart:C1Chart Name="chartRight" Grid.Row="1" Margin="5" ChartType="LineSmoothed" >
			<c1chart:C1Chart.View>
				<c1chart:ChartView>
					<c1chart:ChartView.AxisX>
						<c1chart:Axis Max="9" Min="0" MajorGridStroke="DarkGray">
							<c1chart:Axis.Title>
								<TextBlock Foreground="Crimson" Text="Frequency (Hz)" TextAlignment="Center" />
							</c1chart:Axis.Title>
						</c1chart:Axis>
					</c1chart:ChartView.AxisX>
					<c1chart:ChartView.AxisY>
						<c1chart:Axis AutoMax="False" AutoMin="False" MajorUnit="20" Max="140" Min="-10" MajorGridStroke="DarkGray">
							<c1chart:Axis.Title>
								<TextBlock Foreground="Crimson" Text="Acoustic Gain (dB)" TextAlignment="Center" />
							</c1chart:Axis.Title>
						</c1chart:Axis>
					</c1chart:ChartView.AxisY>
				</c1chart:ChartView>
			</c1chart:C1Chart.View>
			<c1chart:C1Chart.Data>
				<c1chart:ChartData>
					<c1chart:ChartData.ItemNames>250 500 750 1k 1.5k 2k 3k 4k 6k 8k</c1chart:ChartData.ItemNames>
					<c1chart:DataSeries ChartType="AreaSmoothed" ConnectionStroke="Transparent" ConnectionFill="LightGray" Label="area" Values="-10 -10 -10 -10 -10 -10 -10 -10 -10 -10" />
					<c1chart:DataSeries ChartType="AreaSmoothed" ConnectionStroke="Transparent" ConnectionFill="LightGray" Label="area" Values="140 140 140 140 140 140 140 140 140 140" />
					<c1chart:DataSeries ChartType="AreaSmoothed" ConnectionStroke="Transparent" ConnectionFill="White"  Label="area" Values="50 50 90 90 90 90 90 90 70 70" />
					<c1chart:DataSeries ChartType="AreaSmoothed" ConnectionStroke="Transparent" ConnectionFill="LightGray"  Label="area" Values="5 10 10 10 10 30 30 40 30 30" />
					<c1chart:DataSeries ChartType="Line" ConnectionFill="Transparent" ConnectionStroke="LightGray" ConnectionStrokeDashes="1" Label="grid" Values="80 80 80 80 80 80 80 80 80 80" />
					<c1chart:DataSeries ChartType="Line" ConnectionFill="Transparent" ConnectionStroke="LightGray" ConnectionStrokeDashes="1" Label="grid" Values="60 60 60 60 60 60 60 60 60 60" />
					<c1chart:DataSeries ChartType="Line" ConnectionFill="Transparent" ConnectionStroke="LightGray" ConnectionStrokeDashes="1" Label="grid" Values="40 40 40 40 40 40 40 40 40 40" />
					<c1chart:DataSeries ChartType="Line" ConnectionFill="Transparent" ConnectionStroke="LightGray" ConnectionStrokeDashes="1" Label="grid" Values="20 20 20 20 20 20 20 20 20 20" />
					<c1chart:DataSeries ConnectionFill="LightCoral" Label="Loud" SymbolFill="White" SymbolMarker="None" SymbolStroke="LightCoral" Values="20 22 19 24 25 65 85 55 55 45" />
					<c1chart:DataSeries ConnectionFill="Pink"       Label="Avg"  SymbolFill="White" SymbolMarker="None" SymbolStroke="Pink" Values="18 15 12 14 15 50 55 65 45 45" />
					<c1chart:DataSeries ConnectionFill="LightGray"  Label="Soft" SymbolFill="White" SymbolMarker="None" SymbolStroke="Gray" Values="8 12 10 12 15 45 45 55 35 35" />
				</c1chart:ChartData>
			</c1chart:C1Chart.Data>
			<c1chart:C1ChartLegend DockPanel.Dock="Right" Visibility="Collapsed" />
			<c1chart:C1Chart.ContextMenu>
				<ContextMenu>
					<MenuItem Header="Select Graph Type">
						<!--<MenuItem.Icon>
							<Image Source="Images/cut.png" />
						</MenuItem.Icon>-->
						<MenuItem Header="2-cc Coupler Gain"/>
						<MenuItem Header="2-cc I/O Curve"/>
						<MenuItem Header="Ear Simulator Gain"/>
						<MenuItem Header="Ear Simulator I/O Curve"/>
						<MenuItem Header="Real Ear Insertion Gain"/>
						<MenuItem Header="Real Ear I/O Curve"/>
						<MenuItem Header="Real Ear Insertion Gain"/>
						<MenuItem Header="Real Ear Aided Gain"/>
						<MenuItem Header="Speech-o-gram"/>
						<MenuItem Header="Aided Thresholds"/>
						<MenuItem Header="RESR"/>
						<MenuItem Header="2cc OSPL 90"/>
					</MenuItem>
					<MenuItem Header="View Targets">
						<MenuItem Header="Soft" IsCheckable="True" IsChecked="True"/>
						<MenuItem Header="Average" IsCheckable="True" IsChecked="True"/>
						<MenuItem Header="Loud" IsCheckable="True" IsChecked="True"/>
						<MenuItem Header="Output90" IsCheckable="True" IsChecked="False"/>
					</MenuItem>
					<MenuItem Command="Copy">
						<!--<MenuItem.Icon>
							<Image Source="Images/copy.png" />
						</MenuItem.Icon> -->
					</MenuItem>
					<MenuItem Command="Print">
						<!--<MenuItem.Icon>
							<Image Source="Images/print.png" />
						</MenuItem.Icon> -->
					</MenuItem>
				</ContextMenu>
			</c1chart:C1Chart.ContextMenu>
		</c1chart:C1Chart>
	</Grid>
</Border>
 
<Border Name="brdAudioChartLeft" CornerRadius="10" Grid.Column="2" Grid.Row="0" 
		Background="White" BorderBrush="LightGray" BorderThickness="2" >
	<Grid>
		<Grid.RowDefinitions>
			<RowDefinition Height="20"/>
			<RowDefinition Height="*"/>
		</Grid.RowDefinitions>
		<Border Name="brdAudioChartHeaderLeft" Grid.Row="0" CornerRadius="10,10,0,0" Height="20">
			<Border.Background>
				<ImageBrush ImageSource="/images/backgrounds/bg-toolbar.jpg" />
			</Border.Background>
		</Border>
		<c1chart:C1Chart Name="chartLeft" Grid.Row="1"  Margin="5" ChartType="LineSmoothed" >
			<c1chart:C1Chart.View>
				<c1chart:ChartView>
					<c1chart:ChartView.AxisX>
						<c1chart:Axis Max="9" Min="0" MajorGridStroke="DarkGray">
							<c1chart:Axis.Title>
								<TextBlock Foreground="Crimson" Text="Frequency (Hz)" TextAlignment="Center" />
							</c1chart:Axis.Title>
						</c1chart:Axis>
					</c1chart:ChartView.AxisX>
					<c1chart:ChartView.AxisY>
						<c1chart:Axis AutoMax="False" AutoMin="False" MajorUnit="20" Max="140" Min="-10" MajorGridStroke="DarkGray">
							<c1chart:Axis.Title>
								<TextBlock Foreground="Crimson" Text="Acoustic Gain (dB)" TextAlignment="Center" />
							</c1chart:Axis.Title>
						</c1chart:Axis>
					</c1chart:ChartView.AxisY>
				</c1chart:ChartView>
			</c1chart:C1Chart.View>
			<c1chart:C1Chart.Data>
				<c1chart:ChartData>
					<c1chart:ChartData.ItemNames>250 500 750 1k 1.5k 2k 3k 4k 6k 8k</c1chart:ChartData.ItemNames>
					<c1chart:DataSeries ConnectionFill="LightCoral" Label="Loud" SymbolFill="White" SymbolMarker="None" SymbolStroke="LightCoral" Values="20 22 19 24 25 65 85 55 55 45" />
					<c1chart:DataSeries ConnectionFill="Pink"       Label="Avg"  SymbolFill="White" SymbolMarker="None" SymbolStroke="Pink" Values="18 15 12 14 15 50 55 65 45 45" />
					<c1chart:DataSeries ConnectionFill="LightGray"  Label="Soft" SymbolFill="White" SymbolMarker="None" SymbolStroke="Gray" Values="8 12 10 12 15 45 45 55 35 35" />
				</c1chart:ChartData>
			</c1chart:C1Chart.Data>
			<c1chart:C1ChartLegend DockPanel.Dock="Right" Visibility="Collapsed"/>
			<c1chart:C1Chart.ContextMenu>
				<ContextMenu>
					<MenuItem Header="Select Graph Type">
						<!--<MenuItem.Icon>
							<Image Source="Images/cut.png" />
						</MenuItem.Icon>-->
						<MenuItem Header="2-cc Coupler Gain"/>
						<MenuItem Header="2-cc I/O Curve"/>
						<MenuItem Header="Ear Simulator Gain"/>
						<MenuItem Header="Ear Simulator I/O Curve"/>
						<MenuItem Header="Real Ear Insertion Gain"/>
						<MenuItem Header="Real Ear I/O Curve"/>
						<MenuItem Header="Real Ear Insertion Gain"/>
						<MenuItem Header="Real Ear Aided Gain"/>
						<MenuItem Header="Speech-o-gram"/>
						<MenuItem Header="Aided Thresholds"/>
						<MenuItem Header="RESR"/>
						<MenuItem Header="2cc OSPL 90"/>
					</MenuItem>
					<MenuItem Header="View Targets">
						<MenuItem Header="Soft" IsCheckable="True" IsChecked="True"/>
						<MenuItem Header="Average" IsCheckable="True" IsChecked="True"/>
						<MenuItem Header="Loud" IsCheckable="True" IsChecked="True"/>
						<MenuItem Header="Output90" IsCheckable="True" IsChecked="False"/>
					</MenuItem>
					<MenuItem Command="Copy">
						<!--<MenuItem.Icon>
							<Image Source="Images/copy.png" />
						</MenuItem.Icon>-->
					</MenuItem>
					<MenuItem Command="Print">
						<!--<MenuItem.Icon>
							<Image Source="Images/print.png" />
						</MenuItem.Icon>-->
					</MenuItem>
				</ContextMenu>
			</c1chart:C1Chart.ContextMenu>
		</c1chart:C1Chart>
	</Grid>
</Border>

C#: <code csharp>

public WindowMain()

      {
          InitializeComponent();
          InitializeBinauralAudiogramChart();
          InitializeFittingCharts();
          AudiogramLeft.InitializeChart();
          AudiogramRight.InitializeChart();
          // initialize single audiograms
          AudiogramLeft.AudiogramChart.Tag=0;
          SelectScreen("patient");
      }

      private void InitializeBinauralAudiogramChart()
      {
          //templ.Visibility = Visibility.Collapsed;
          //templ.Checked += (s, a) => { UpdateTemplate(chart.View.AxisX); UpdateTemplate(chart.View.AxisY); };
          //templ.Unchecked += (s, a) => { UpdateTemplate(chart.View.AxisX); UpdateTemplate(chart.View.AxisY); };
          //xbase.ItemsSource = new string[] { "None", "e", "10" };
          //xbase.Tag = chart.View.AxisX;
          //xbase.SelectionChanged += new SelectionChangedEventHandler(base_SelectionChanged);
          //xbase.SelectedIndex = 2;
          //ybase.ItemsSource = new string[] { "None", "e", "10" };
          //ybase.Tag = chart.View.AxisY;
          //ybase.SelectionChanged += new SelectionChangedEventHandler(base_SelectionChanged);
          //ybase.SelectedIndex = 2;
          //templ.IsChecked = true;
          chartAudiogramBinaural.ChartType = ChartType.LineSymbols; //ChartType.LineSmoothed;
          // create data series
          chartAudiogramBinaural.Data.Children.Clear();
          ////chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(0.01, 10, 100, (val) => Math.Log10(val), "y(x)=log(x)"));
          ////chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(0.01, 10, 100, (val) => val, "y(x)=x"));
          ////chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(0.01, 1, 100, (val) => Math.Pow(10, val), "y(x)=10^x"));
          //chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(.250, 8, 10, (val) => Math.Log10(val), "Left"));
          //chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(250, 8000, 10, (val) => Math.Log10(val), "Right"));
          double[] DataX = new double[10];
          double[] DataYRight = new double[10];
          double[] DataYLeft = new double[10];
          DataX[0] = .250;
          DataX[1] = .500;
          DataX[2] = .750;
          DataX[3] = 1.000;
          DataX[4] = 1.500;
          DataX[5] = 2.000;
          DataX[6] = 3.000;
          DataX[7] = 4.000;
          DataX[8] = 6.000;
          DataX[9] = 8.000;
          Random randNum = new Random();
          for (int i = 0; i < DataYRight.Length; i++)
          {
              DataYRight[i] = randNum.Next(65);
          }
          chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(DataX, DataYRight, "Left"));
          for (int i = 0; i < DataYRight.Length; i++)
          {
              DataYLeft[i] = randNum.Next(35);
          }
          chartAudiogramBinaural.Data.Children.Add(Function.CreateDataSeries(DataX, DataYLeft, "Right"));
          // set dataseries colors and symbol markers
          chartAudiogramBinaural.Data.Children[0].SymbolMarker = Marker.DiagonalCross;
          chartAudiogramBinaural.Data.Children[0].SymbolFill = Brushes.White;
          chartAudiogramBinaural.Data.Children[0].SymbolStroke = Brushes.Blue;
          chartAudiogramBinaural.Data.Children[0].ConnectionFill = Brushes.Blue;
          chartAudiogramBinaural.Data.Children[1].SymbolMarker = Marker.Dot;
          chartAudiogramBinaural.Data.Children[1].SymbolFill = Brushes.White;
          chartAudiogramBinaural.Data.Children[1].SymbolStroke = Brushes.Red;
          chartAudiogramBinaural.Data.Children[1].ConnectionFill = Brushes.Red;
          // minor grid
          chartAudiogramBinaural.View.AxisX.MinorUnit = .50;
          chartAudiogramBinaural.View.AxisX.MinorGridStroke = new SolidColorBrush(Colors.LightGray);
          chartAudiogramBinaural.View.AxisX.MinorGridStrokeThickness = 0.5;
          // major grid
          chartAudiogramBinaural.View.AxisX.MajorGridStroke = new SolidColorBrush(Colors.DarkGray);
          //chartAudiogramBinaural.View.AxisX.MajorGridStrokeDashes = null;
          chartAudiogramBinaural.View.AxisX.MajorUnit = 1;
          // X axis Min/Max
          chartAudiogramBinaural.View.AxisX.Min = .100;
          chartAudiogramBinaural.View.AxisX.Max = 10;
          // log base
          chartAudiogramBinaural.View.AxisX.LogBase = 10;
          chartAudiogramBinaural.View.AxisY.MajorGridStroke = new SolidColorBrush(Colors.DarkGray);
          //chartAudiogramBinaural.View.AxisY.MajorGridStrokeDashes = null;
          // X labels
          //chartAudiogramBinaural.ChartData.ItemNames = (Array here);
          //string[] XLabels = new string[10] { "250", "500", "750", "1k", "1.5k", "2k", "3k", "4k", "6k", "8k" };
          //string[] XLabels = new string[32] { "250", "500", "750", "1k", "", "1.5k", "", "2k", "", "", 
          //    "", "3k", "", "", "", "4k", "", "", "", "", 
          //    "", "", "", "6k", "", "", "", "", "", "", 
          //    "", "8k" };
          //string[] XLabels = new string[9] { "250", "1k", "2k", "3k", "4k", "", "6k", "", "8k" };
          string[] XLabels = new string[9] { "250", "1k", "2k", ".", "4k", ".", "6k", ".", "8k" };
          chartAudiogramBinaural.Data.ItemNames = XLabels;
      }
      private void InitializeFittingCharts()
      {
          // set chart type
          chartLeft.ChartType = ChartType.LineSmoothed; //ChartType.LineSymbolsSmoothed;
          chartRight.ChartType = ChartType.LineSmoothed; //ChartType.LineSymbolsSmoothed;
          // clear data series
          chartLeft.Data.Children.Clear();
          chartRight.Data.Children.Clear();
          // create data series
          double[] DataX = new double[10];
          double[] DataYLoud = new double[10];
          double[] DataYAvg = new double[10];
          double[] DataYSoft = new double[10];
          double[] DataYArea1 = new double[10] { 140, 140, 140, 140, 140, 140, 140, 140, 140, 140 }; 
          double[] DataYArea2 = new double[10] { 70, 70, 70, 80, 80, 80, 70, 70, 60, 60 };
          double[] DataYArea3 = new double[10] { 10, 10, 10, 20, 20, 20, 10, 10, 10, 10 };
          DataX[0] = .250;
          DataX[1] = .500;
          DataX[2] = .750;
          DataX[3] = 1.000;
          DataX[4] = 1.500;
          DataX[5] = 2.000;
          DataX[6] = 3.000;
          DataX[7] = 4.000;
          DataX[8] = 6.000;
          DataX[9] = 8.000;
          Random randNum = new Random();
          // shaded area background
          chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea1, "area"));
          chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea2, "area"));
          chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea3, "area"));
          chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea1, "area"));
          chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea2, "area"));
          chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYArea3, "area"));
          for (int i = 0; i < 3; i++)
          {
              chartLeft.Data.Children[i].ChartType = ChartType.AreaSmoothed;
              chartRight.Data.Children[i].ChartType = ChartType.AreaSmoothed;
              chartLeft.Data.Children[i].ConnectionFill = Brushes.LightGray;
              chartLeft.Data.Children[i].ConnectionStroke = Brushes.Transparent;
              chartRight.Data.Children[i].ConnectionFill = Brushes.LightGray;
              chartRight.Data.Children[i].ConnectionStroke = Brushes.Transparent;
          }
          chartLeft.Data.Children[1].ConnectionFill = Brushes.White;
          chartRight.Data.Children[1].ConnectionFill = Brushes.White;
          // Loud series
          for (int i = 0; i < DataYLoud.Length; i++)
          {
              DataYLoud[i] = randNum.Next(35);
          }
          chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYLoud, "Loud"));
          chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYLoud, "Loud"));
          //chartRight.Data.Children.Add(Function.CreateDataSeries(DataYLoud, "Loud"));
          // Avg series
          for (int i = 0; i < DataYAvg.Length; i++)
          {
              DataYAvg[i] = randNum.Next(45);
          }
          chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYAvg, "Avg"));
          chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYAvg, "Avg"));
          //chartRight.Data.Children.Add(Function.CreateDataSeries(DataYAvg, "Avg"));
          // Soft series
          for (int i = 0; i < DataYAvg.Length; i++)
          {
              DataYSoft[i] = randNum.Next(65);
          }
          chartLeft.Data.Children.Add(Function.CreateDataSeries(DataX, DataYSoft, "Soft"));
          chartRight.Data.Children.Add(Function.CreateDataSeries(DataX, DataYSoft, "Soft"));
          //chartRight.Data.Children.Add(Function.CreateDataSeries(DataYSoft, "Soft"));
          // set dataseries colors and symbol markers
          chartLeft.Data.Children[3].ConnectionFill = Brushes.LightCoral;
          chartLeft.Data.Children[4].ConnectionFill = Brushes.Pink;
          chartLeft.Data.Children[5].ConnectionFill = Brushes.DarkGray;
          chartRight.Data.Children[3].ConnectionFill = Brushes.LightCoral;
          chartRight.Data.Children[4].ConnectionFill = Brushes.Pink;
          chartRight.Data.Children[5].ConnectionFill = Brushes.DarkGray;
          for (int i = 3; i < 6; i++)
          {
              chartLeft.Data.Children[i].SymbolMarker = Marker.None;
              chartRight.Data.Children[i].SymbolMarker = Marker.None;
              //chartLeft.Data.Children[0].SymbolMarker = Marker.DiagonalCross;
              //chartLeft.Data.Children[0].SymbolFill = Brushes.White;
              //chartLeft.Data.Children[0].SymbolStroke = Brushes.Blue;
              //chartLeft.Data.Children[0].ConnectionFill = Brushes.Blue;
              //chartRight.Data.Children[1].SymbolMarker = Marker.Dot;
              //chartRight.Data.Children[1].SymbolFill = Brushes.White;
              //chartRight.Data.Children[1].SymbolStroke = Brushes.Red;
              //chartRight.Data.Children[1].ConnectionFill = Brushes.Red;
          }
          // minor grid
          chartLeft.View.AxisX.MinorUnit = 1;
          chartLeft.View.AxisX.MinorGridStroke = new SolidColorBrush(Colors.LightGray);
          chartLeft.View.AxisX.MinorGridStrokeThickness = 0.5;
          chartRight.View.AxisX.MinorUnit = 1;
          chartRight.View.AxisX.MinorGridStroke = new SolidColorBrush(Colors.LightGray);
          chartRight.View.AxisX.MinorGridStrokeThickness = 0.5;
          // major grid
          chartLeft.View.AxisX.MajorGridStroke = new SolidColorBrush(Colors.DarkGray);
          //chartLeft.View.AxisX.MajorGridStrokeDashes = null;
          chartRight.View.AxisX.MajorGridStroke = new SolidColorBrush(Colors.DarkGray);
          //chartRight.View.AxisX.MajorGridStrokeDashes = null;
          // log base
          //chartLeft.View.AxisX.LogBase = 10;
          //chartRight.View.AxisX.LogBase = 10;
          chartLeft.View.AxisY.MajorGridStroke = new SolidColorBrush(Colors.DarkGray);
          //chartLeft.View.AxisY.MajorGridStrokeDashes = null;
          chartRight.View.AxisY.MajorGridStroke = new SolidColorBrush(Colors.DarkGray);
          //chartRight.View.AxisY.MajorGridStrokeDashes = null;
      }
      private void btnSelectFittingSide_Click(object sender, RoutedEventArgs e)
      {
          Thickness margin = new Thickness();
          margin.Left = 5;
          margin.Top = 5;
          margin.Right = 5;
          margin.Bottom = 5;
          //brdAudioChartLeft.Margin = margin;
          //brdAudioChartRight.Margin = margin;
          chartLeft.Margin = margin;
          chartRight.Margin = margin;
          chartLeft.IsEnabled = true;
          chartRight.IsEnabled = true;
          chartLeft.Opacity = 1.0;
          chartRight.Opacity = 1.0;
          brdAudioChartHeaderLeft.Opacity = 1.0;
          brdAudioChartHeaderRight.Opacity = 1.0;
          SolidColorBrush DefaultBrush = new SolidColorBrush();
          DefaultBrush.Color = Color.FromArgb(255, 132, 132, 132); // #FF848484;  // Gray
          Thickness DefaultBrushSize = new Thickness();
          DefaultBrushSize.Left = 2.0;
          DefaultBrushSize.Top = 2.0;
          DefaultBrushSize.Right = 2.0;
          DefaultBrushSize.Bottom = 2.0;
          //chartLeft.BorderThickness = DefaultBrushSize;
          //chartRight.BorderThickness = DefaultBrushSize;
          brdAudioChartLeft.BorderThickness = DefaultBrushSize;
          brdAudioChartRight.BorderThickness = DefaultBrushSize;
          if (sender == btnSelectLeftFitting)
          {
              //chartLeft.BorderBrush = Brushes.Blue;
              //chartRight.BorderBrush = DefaultBrush;
              //brdAudioChartLeft.BorderBrush = Brushes.Blue;
              //brdAudioChartRight.BorderBrush = DefaultBrush;
              brdAudioChartHeaderRight.Opacity = 0.5;
              //margin.Left   = 45;
              //margin.Top    = 45;
              //margin.Right  = 45;
              //margin.Bottom = 45;
              ////brdAudioChartRight.Margin = margin;
              //chartRight.Margin = margin;
              chartRight.IsEnabled = false;
              chartRight.Opacity = 0.5;
          }
          else if (sender == btnSelectRightFitting)
          {
              //chartLeft.BorderBrush = DefaultBrush;
              //chartRight.BorderBrush = Brushes.Red;
              //brdAudioChartLeft.BorderBrush = DefaultBrush;
              //brdAudioChartRight.BorderBrush = Brushes.Red;
              brdAudioChartHeaderLeft.Opacity = 0.5;
              //margin.Left   = 45;
              //margin.Top    = 45;
              //margin.Right  = 45;
              //margin.Bottom = 45;
              ////brdAudioChartLeft.Margin = margin;
              //chartLeft.Margin = margin;
              chartLeft.IsEnabled = false;
              chartLeft.Opacity = 0.5;
          }
          else
          {
              //chartLeft.BorderBrush = Brushes.Blue;
              //chartRight.BorderBrush = Brushes.Red;
              //brdAudioChartLeft.BorderBrush = Brushes.Blue;
              //brdAudioChartRight.BorderBrush = Brushes.Red;
          }
      }