Создать стиль для поворота метки оси в коде позади - PullRequest
4 голосов
/ 25 июня 2011

Мне нужно создать стиль, который вращает метки оси X.Я нашел следующие примеры: Легко вращать метки осей диаграммы Silverlight / WPF Toolkit и Поворот текста и Как изменить AxisLabelStyle в коде позади?

Мне нужно сделать это в коде позади.Итак, я попробовал это:

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

И теперь он работает отлично!

1 Ответ

2 голосов
/ 25 июля 2012

Если вы делаете это из кода, вам следует сосредоточиться на манипулировании коллекцией преобразований.

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