c# - 如何旋转 WinRT Xaml Toolkit 柱形图的标签?

标签 c# .net windows-runtime windows-phone-8.1 winrt-xaml-toolkit

我有以下 XAML 定义:

<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

最佳答案

可以旋转标签。它需要几个步骤,不幸的是,由于 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 一起使用)。

关于c# - 如何旋转 WinRT Xaml Toolkit 柱形图的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30636496/

相关文章:

winapi - Golang : using Windows 10 API/UWP/System. Windows 运行时?

c# - 当鼠标悬停在特定文本上时给出提示窗口

c# - 如何将十六进制 "string"转换为 .NET 中的实际十六进制值?

c# - 将命名空间传递给函数

c# - 无法在代码隐藏中将背景图像设置为重复线性渐变

c# - EF 中的模型优先与数据优先

c# - 我们可以在 ASP.NET 中为 pagemethod 和 webmethod 使用相同的数据表吗?

.net - 如何比较两个 exe 文件(一个是现在用旧代码构建的,一个是几个月前构建的现有 exe 文件)?

vb.net - 在WinRT 8.1中使用sqlite使用datetime数据类型保存日期和时间:System.InvalidCastException

c# - UWP Windows 应用商店应用程序上的 TLS 客户端证书身份验证