2013-05-10 3 views
0

내 Visiblox 차트가 사용 가능한 공간에 맞게 축소되며 축 제목이 너무 잘려 축척 될 수 있습니다. 그래서 템플릿을위한 Blend의 시작 코드를 사용하여 LinearAxis를위한 새로운 ControlTemplate을 만들 것이라고 생각했습니다.Visiblox - 사용 가능한 공간에 맞춰 축 축척 조정

AxisLabel 텍스트 블록 주위에 ViewBox를 추가했지만 제대로 작동하지 않았습니다. 코드가 수평 또는 수직 축에서 작업하기에 충분해야하기 때문에 Grid 행 및 열과 관련하여 흥미로운 점이 있습니다. 많은 시행 착오 끝에 외부 지원과 함께 사용 가능한 공간에 맞게 축 제목을 축소하는 작업 템플릿이 있습니다. 아래 답변을 참조하십시오.

답변

0
<ControlTemplate TargetType="{x:Type charts:LinearAxis}" x:Key="LinearAxisTemplate"> 
    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> 
     <Grid x:Name="LayoutRoot" Background="{TemplateBinding Background}"> 
      <Grid x:Name="LabelsContainer"/> 
      <Canvas x:Name="BehaviourCanvas"/> 
      <Viewbox Stretch="Uniform" StretchDirection="DownOnly" 
         Grid.Row="{Binding (Grid.Row), ElementName=AxisLabelContainer}" 
         Grid.Column="{Binding (Grid.Column), ElementName=AxisLabelContainer}"> 
       <Visiblox_Charts_Primitives:TransposePanel x:Name="AxisLabelContainer"> 
        <TextBlock x:Name="AxisLabel" Style="{TemplateBinding TitleStyle}" Text="{TemplateBinding Title}" /> 
       </Visiblox_Charts_Primitives:TransposePanel> 
      </Viewbox> 
      <Line x:Name="AxisLine" Style="{TemplateBinding AxisLineStyle}" Stretch="Fill"/> 
     </Grid> 
    </Border> 
</ControlTemplate> 

은 그냥 차트의 임의의 LinearAxis이 템플릿을 적용하고, 타이틀에 맞게 축소됩니다. 모든 유형의 축에 대해이를 쉽게 적용 할 수 있습니다.

(XAxis as LinearAxis).Template = MyChart.FindResource("LinearAxisTemplate") as System.Windows.Controls.ControlTemplate;