Wpf Visiblox-缩放轴标题以适应可用空间

Wpf Visiblox-缩放轴标题以适应可用空间,wpf,scale,axis,visiblox,Wpf,Scale,Axis,Visiblox,我的Visiblox图表会缩小以适应可用空间,有时轴标题会缩小到无法显示的程度。所以我想我应该使用Blend的起始代码为LinearAxis创建一个新的ControlTemplate 我在AxisLabel文本块周围添加了一个ViewBox,但它无法正常工作。对于网格行和列,您需要做一些有趣的事情,因为代码需要足够通用,才能在水平轴或垂直轴上工作。经过多次尝试和错误,再加上一些外部支持,我有了一个工作模板,可以缩小轴标题以适应可用空间。见下面的答案 <ControlTemplate Tar

我的Visiblox图表会缩小以适应可用空间,有时轴标题会缩小到无法显示的程度。所以我想我应该使用Blend的起始代码为LinearAxis创建一个新的ControlTemplate

我在AxisLabel文本块周围添加了一个ViewBox,但它无法正常工作。对于网格行和列,您需要做一些有趣的事情,因为代码需要足够通用,才能在水平轴或垂直轴上工作。经过多次尝试和错误,再加上一些外部支持,我有了一个工作模板,可以缩小轴标题以适应可用空间。见下面的答案

<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>
(XAxis as LinearAxis).Template = MyChart.FindResource("LinearAxisTemplate") as System.Windows.Controls.ControlTemplate;