2011-06-24 32 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上犯了一些错误。

我该怎么办?谢谢!

编辑: Ø刚刚更新了我的代码:

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);