2011-06-24 5 views
4

x軸のラベルを回転するスタイルを作成する必要があります。 私はこの例を見つけた:Easily rotate the axis labels of a Silverlight/WPF Toolkit chartRotating TextHow to change AxisLabelStyle in code behind?コード内で軸ラベルを回転させるためのスタイルを作成

私は背後にあるコードでこれを行う必要があります。だから私はこれを試してみた:

var labelStyle = new Style(typeof(AxisLabel)); 
var rotate = new Setter(RotateTransform.AngleProperty, 270); 
var setter = new Setter(AxisLabel.RenderTransformProperty, rotate); 

labelStyle.Setters.Add(setter); 
(xSerie.IndependentAxis as CategoryAxis).AxisLabelStyle = labelStyle; 

私はRenderTransformPropertyにいくつかのミスをやっていると思います。

私は何をしなければなりませんか?ありがとう!

編集: Oだけに私のコードを更新:

var labelStyle = new Style(typeof(AxisLabel)); 
var setter = new Setter(AxisLabel.RenderTransformProperty, new RotateTransform(){Angle = -60, CenterX = 40, CenterY = 30}); 
labelStyle.Setters.Add(setter); 

そして今、それが正常に動作します!

+0

何が起こっていると何をすることを期待します起こる?私は、変換元があなたの考えではないと思うでしょう。ああ、ショートナーの後ろにあなたのリンクを隠してはいけない、あなたに利用できる文字の不足はありません。 – ChrisF

+0

@ChirsFラベルを270度回転したいが、このコードでは何も起こらない。私は、単にクリーンテキストを持つためにショートパンダを使用しています。 –

答えて

2

コードからこれを行う場合は、トランスフォームコレクションの操作に焦点を当てる必要があります。

var group = new TransformGroup(); 
group.Children.Add(new RotateTransform() { Angle = 270 }); 
control.RenderTransform = group; 

また、既存のRenderTransformに変換し、あなたの追加:

TransformGroup renderTransform = control.RenderTransform as TransformGroup; 
if (renderTransform != null) 
{ 
    RotateTransform rotate = renderTransform.Children 
     .FirstOrDefault(o => o is RotateTransform as RotateTransform 
    if(rotate == null) 
    { 
     rotate = new RotateTransform(); 
     renderTransform.Children.Add(rotate); 
    } 
    rotate.Angle = 270; 
} 

ああ...あなたも考える必要がありますあなたのRenderTransformOrigin

control.RenderTransformOrigin = new Point(0.5, 0.5); 
関連する問題