우선이다 먼저, 각 차트를 그리드에 추가하십시오. 여기 내 XAML이 그것에 대해 모습입니다 :
<Grid Name="layout" />
다음은 내가 초기화 및 설정은 몇 안에 내 루프의 구성 요소를 (모든이 표시됩니다) - 즉 내가 차트 -하려는 컬렉션 또는 값을 반복 내가 그리드/차트
LineSeries lineSeries = new LineSeries();
lineSeries.VerticalAxis = new LinearAxis()
{ //set additional properties here
LabelStyle = Resources["AdjustedLabelVerticalAxis"] as Style
};
lineSeries.ItemsSource = collection.Values;
lineSeries.CategoryBinding = new PropertyNameDataPointBinding() { PropertyName = "Date" };
lineSeries.ValueBinding = new PropertyNameDataPointBinding() { PropertyName = "Value" };
RadCartesianChart chart = new RadCartesianChart();
chart.HorizontalAxis = new DateTimeContinuousAxis() { LabelFormat = "HH:mm:ss" };
chart.Series.Add(lineSeries);
에 추가됩니다 - 그건 그 때 나는 내로 horizontalAxis이 사라 "해킹"
chart.HorizontalAxis.MajorTickStyle = Resources["HideTicksHorizontalAxis"] as Style;
chart.HorizontalAxis.LabelStyle = Resources["HideShiftHorizontalAxisLabel"] as Style;
chart.HorizontalAxis.LineThickness = 0;
이제 우리는 프로그램에 그리드에 차트를 추가 할 필요가 루프의 끝 부분이므로 각 차트가 자체 행에있어 자동 크기 조정에 도움이됩니다.
layout.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(chart.MinHeight, GridUnitType.Star) });
다음으로 우리는 우리가 차트를 넣어 추가 할 그리드에서 무엇을 행 설정 :
Grid.SetRow(chart, i); //where i is the loop counter
layout.Children.Add(chart);
루프가 완료되면, 우리는 그리드에 collection
에서 우리의 모든 차트가 , 가로 축 레이블 없음. 우리는 DateTimeContinousAxis가 필요합니다.
먼저 가장 마지막 행을 추가해야합니다. 다른 차트를 만들고 동일한 데이터를 채우고 모든 것을 숨기고 조정하기 때문입니다.
그래서 내 루프의 외부 내가 그랬어 :
layout.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(30) }); //add last row
DateTimeContinuousAxis graph = new DateTimeContinuousAxis();
graph.MinHeight = 12;
graph.Maximum = collection.Values[collection.Values.Count - 1].Date; //max/min DateTime values
graph.Minimum = collection.Values[0].Date;
graph.LabelInterval = 2;
graph.MaximumTicks = 3;
graph.LabelFormat = "hh:mm:ss";
graph.MajorStepUnit = Telerik.Charting.TimeInterval.Second;
graph.LineThickness = 1;
그런 다음 미니멀 LinearAxis
, LineSeries
을 만들에 가서, 거기 당신이 그것을 가지고 RadCartesianChart
LinearAxis axis = new LinearAxis();
LineSeries ls = new LineSeries();
RadCartesianChart blankChart = new RadCartesianChart();
ls.ItemsSource = collection.Values; //Set up for binding
ls.CategoryBinding = new PropertyNameDataPointBinding() { PropertyName = "Date" };
ls.ValueBinding = new PropertyNameDataPointBinding() { PropertyName = "Value" };
ls.Visibility = System.Windows.Visibility.Hidden; //hide the line from being plotted
axis.LabelStyle = Resources["TextBlockStyle2"] as Style;
axis.Opacity = 0; //make it invisible
axis.MinHeight = 0; //make it able to resize to 0 if ever needed
blankChart.MinHeight = 0;
blankChart.HorizontalAxis = graph;
blankChart.VerticalAxis = axis;
blankChart.Series.Add(ls);
Grid.SetRow(blankChart, collection.Count);
layout.Children.Add(blankChart);
, 창문의 마지막 그리드 다른 차트와 정렬되는 보이는 DateTime 연속 축을 포함합니다.이것은 꽤 해킹입니다, 그래서 그것의 예쁜 또는 개정. 아래는 XAML에서 사용할 수있는 스타일과 최종 결과입니다.
<Style x:Key="AdjustedLabelVerticalAxis" TargetType="{x:Type TextBlock}">
<Setter Property="Width" Value="30"/>
<Setter Property="Margin" Value="0,0,2,0"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="TextAlignment" Value="Right"/>
</Style>
<Style x:Key="HideShiftHorizontalAxisLabel" TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4,-15,4,0"/>
<Setter Property="Foreground" Value="Transparent"/>
</Style>
<Style x:Key="HideTicksHorizontalAxis" TargetType="{x:Type Rectangle}">
<Setter Property="Visibility" Value="Hidden"/>
</Style>
질문
은 문의하시기 바랍니다.
그럼 트릭은 TextBlock.Width를 사용하고 LinearAxis.LabelStyle에서 스타일을 사용하여 설정하는 것이 었습니다. –