0

私の Visiblox チャートは使用可能なスペースに合わせて縮小されますが、軸のタイトルが縮小されすぎて途切れてしまうことがあります。そこで、テンプレート用の Blend のスターター コードを使用して、LinearAxis 用の新しい ControlTemplate を作成するだけでよいと考えました。

AxisLabel テキストブロックの周りに ViewBox を追加しましたが、正しく機能しませんでした。コードは水平軸または垂直軸で機能するのに十分汎用的である必要があるため、Grid の行と列で行う必要がある興味深い作業がいくつかあります。多くの試行錯誤といくつかの外部サポートの後、使用可能なスペースに収まるように Axis タイトルを縮小する作業テンプレートができました。以下の回答を参照してください。

4

1 に答える 1

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;
于 2013-05-10T22:29:24.937 に答える