我的Visiblox图表缩小以适应可用空间,有时轴标题会缩小,以至于它被切断了。所以我想我会为LinearAxis创建一个新的ControlTemplate,使用Blend的模板初学者代码。
我在AxisLabel文本块周围添加了一个ViewBox,但它无法正常工作。你需要对Grid行和列进行一些有趣的操作,因为代码需要足够通用才能在水平轴或垂直轴上工作。经过大量的试验和错误,以及一些外部支持,我有一个工作模板,缩小我的Axis标题以适应可用空间。见下面的答案。
答案 0 :(得分: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;