private void point_PositionChanged(object sender, PositionChangedEventArgs e)
		{
			if (data == null) return;

			var verticalSectionDS = CreateVerticalSection(e.Position.X).AsYDataSource();
			verticalSectionChart.DataSource = new CompositeDataSource(dimensionDataSource, verticalSectionDS);

			var horizontalSectionDS = CreateHorizontalSection(e.Position.Y).AsYDataSource();
			horizontalSectionChart.DataSource = new CompositeDataSource(dimensionDataSource, horizontalSectionDS);
		}
		protected virtual void OnMarkerPositionChanged(PositionChangedEventArgs e)
		{
		}
		private void marker_PositionChanged(object sender, PositionChangedEventArgs e)
		{
			OnMarkerPositionChanged(e);
		}
		void pt_PositionChanged(object sender, PositionChangedEventArgs e)
		{
			DraggablePoint pt = (DraggablePoint)sender;

			Ellipse ellipse = (Ellipse)pt.Tag;
			Rect bounds = RectExtensions.FromCenterSize(e.Position, xSize, ySize);

			//ViewportRectPanel.SetPoint1(ellipse, bounds.TopLeft);
			//ViewportRectPanel.SetPoint2(ellipse, bounds.BottomRight);
		}
		protected override void OnMarkerPositionChanged(PositionChangedEventArgs e)
		{
			if (Palette != null)
			{
				SelectedColor = Palette.GetColor(e.Position.X);
				SelectedBrush = new SolidColorBrush(SelectedColor);
				SelectedValueChanged.Raise(this);
			}
		}
		protected void OnPoint_PositionChanged(object sender, PositionChangedEventArgs e)
		{
			DraggablePoint source = (DraggablePoint)sender;
			int index = GetIndex(source);
			var point = source.Position;
			var point3D = outProject(point);
			outPattern.Points[index] = point3D;
		}
		void thumb_PositionChanged(object sender, PositionChangedEventArgs e)
		{
			int index = GetIndex((DependencyObject)sender);
			UpdatePaletteView(index);
		}