1

У меня есть следующие XAML определение:Как повернуть метки таблицы столбцов WinRTXamlToolkit?

<Charting:Chart x:Name="ColumnChart" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" 
       Width="Auto" 
       Height="Auto" 
       Padding="50" 
       Title="100 random numbers"> 
    <Charting:ColumnSeries Title="Skills" 
          IndependentValuePath="Name" 
          DependentValuePath="Pts" 
          IsSelectionEnabled="True"> 

    </Charting:ColumnSeries> 
</Charting:Chart> 

Как я могу повернуть этикетки (скажем, на -90 градусов), чтобы сделать их более читаемыми?

enter image description here

+0

Есть ли шаблон для содержимого этикетки? – WiredPrairie

+0

Содержимое ярлыка представлено в основном в формате 'XX.XX - XX.XX', где' X' - это цифра (это диапазон). Диапазоны вычисляются с использованием некоторого кода «C#». – gotqn

+0

Есть ли свойство, такое как ColumTemplate, которое позволило бы полностью настроить? (Я не мог найти никаких документов) – WiredPrairie

ответ

2

Поворот этикетки возможно. Это требует нескольких шагов и, к сожалению, из-за отсутствующей функции в макете WinRT XAML - потенциально потенциального класса.

Основная идея найдена here.

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Charting:Chart x:Name="ColumnChart" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      Padding="50" 
      Title="100 random numbers"> 
     <Charting:ColumnSeries Title="Skills" x:Name="theColumnSeries" 
         IndependentValuePath="Name" 
         DependentValuePath="Pts" 
         IsSelectionEnabled="True"> 
      <Charting:ColumnSeries.IndependentAxis> 
       <Charting:CategoryAxis Orientation="X"> 
        <Charting:CategoryAxis.AxisLabelStyle> 
         <Style TargetType="Charting:AxisLabel"> 
          <Setter Property="Template"> 
           <Setter.Value> 
            <ControlTemplate TargetType="Charting:AxisLabel"> 
             <TextBlock Text="{TemplateBinding FormattedContent}"> 
              <TextBlock.lay 
              <TextBlock.RenderTransform> 
               <RotateTransform Angle="-60" /> 
              </TextBlock.RenderTransform> 
             </TextBlock> 
            </ControlTemplate> 
           </Setter.Value> 
          </Setter> 
         </Style> 
        </Charting:CategoryAxis.AxisLabelStyle> 
       </Charting:CategoryAxis> 
      </Charting:ColumnSeries.IndependentAxis> 
     </Charting:ColumnSeries> 
    </Charting:Chart> 
</Grid> 

# код C Я использовал:

public sealed partial class MainPage : Page 
{ 
    public MainPage() 
    { 
     this.InitializeComponent(); 

     this.Loaded += MainPage_Loaded; 
    } 

    void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     var rnd = new Random(444); 
     ObservableCollection<Demo> values = new ObservableCollection<Demo>(); 
     for (int i = 0; i < 15; i++) 
     { 
      values.Add(new Demo() { Name = (rnd.NextDouble() * 100).ToString(), Pts = i }); 
     } 


     ((ColumnSeries)ColumnChart.Series[0]).ItemsSource = values; 
    } 
} 

class Demo 
{ 
    public string Name { get; set; } 
    public double Pts { get; set; } 
} 

Но, к сожалению, это не совсем то, что вы хотите. Проблема в том, что в WPF не существует LayoutTransform, подобного существующему. Если вы запустите код, как показано выше, метки будут повернуты, но они будут перекрывать другой контент.

Rotation not right

Автор блога написал LayoutTransformer класс, который может помочь решить эту проблему, хотя она была разработана для Silverlight (так что это может быть портативным и работать с WinRT XAML).

+1

Вы также можете использовать ['LayoutTransformControl'] (http://winrtxamltoolkit.codeplex.com/SourceControl/latest#WinRTXamlToolkit/WinRTXamlToolkit.Shared/Controls/LayoutTransformControl/LayoutTransformControl.cs) из инструментария для преобразования макета на ярлыках , –

Смежные вопросы