我正在使用 WinRTXamlToolkit.Controls.DataVisualization.Charting.Chart 对象,其依赖轴整数为0/1,并且是一个独立的时间轴。 我想抑制或者旋转图表顶部的标签。 是在Axis(chart.Axes)还是系列(LineSeries)上找到样式? 我的图表完全通过以下代码填写:
EDIT 1/30 / 2017-3:添加了托管XAML页面。
<Page
x:Class="HomeControl.Views.Historical"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:Charting="using:WinRTXamlToolkit.Controls.DataVisualization.Charting"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:HomeControl.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Charting:Chart x:Name="LineChart" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalAlignment="Top" Height="500">
</Charting:Chart>
</Grid>
</Page>
EDIT 1/30 / 2017-2:添加剩余代码......
var lowDate = records.First().taken.DateTime;
var highDate = records.Last().taken.DateTime;
var allDeviceTelemetry = records.GroupBy(t => t.sensorid).OrderBy(g => g.Key);
var axisTaken = new DateTimeAxis()
{
Title = "Taken",
Orientation = AxisOrientation.X,
IntervalType = DateTimeIntervalType.Minutes,
Interval = 5,
Minimum = lowDate,
Maximum = highDate,
};
LineChart.Axes.Add(axisTaken);
LineChart.Axes.Add(new LinearAxis()
{
Title = "State",
Orientation = AxisOrientation.Y
});
foreach (var deviceTelemetry in allDeviceTelemetry)
{
var series = new LineSeries()
{
Title = deviceTelemetry.Key, // sensorid
IndependentValuePath = "taken",
DependentValuePath = "sensorvalueint",
ItemsSource = deviceTelemetry
};
LineChart.Series.Add(series);
}
我已经使用了其他一些样式,例如间隔和轴标题,我只是无法弄清楚数据点标签样式的位置?
编辑1/30/2017: 这是树,突出显示的对象(底部是TextBlock)。我需要弄清楚如何设计这个&#34; AxisLabel&#34;,&#34; Panel&#34;,&#34; AxisGrid&#34;或&#34; CategoryAxis&#34; - 通过代码。
任何提示都将不胜感激!
-John
答案 0 :(得分:0)
不是一个完整的答案,因为我无法告诉您如何制作标签以显示在顶部,但在我看来,它们更像是数据点标签而不是轴标签。运行工具包的示例应用程序可能会帮助您稍微浏览UI树并使其更容易探索。只需在VS中获取工具箱的源代码,点击F5,打开Chart控件示例,然后在指向标签的同时按Ctrl + Shift。这是我在指向类别轴时得到的结果:
我会围绕数据点,系列搜索并搜索名为style的属性。否则 - 浏览源代码以找到它的设置方式。
答案 1 :(得分:0)
我已经解决了我的问题,但没有达到我预期的结果 - 更好。
经过不少实验,我已经了解了WinRTXAML图表的一些内容;这些观察来自纯粹的编码视角,因为我在页面中没有使用静态XAML。我是控制人员的新手,所以如果有人知道这些学习不完整或被误导,请加入:
将这些学习应用到我原来的问题中,这里发生了什么。虽然我预定了一个DateTime轴,但我的独立轴的传入数据类型是DateTimeOffset。该值被解释为字符串值,因为它不是DateTime(即没有隐式转换)。这导致Chart生成CategoryAxis,将其分配给系列,并将其放置在图表的顶部。 不理解这种情况发生了,我不想在这个顶轴上贴标签,所以我试图压制它们,但我找不到轴,因为它直到AFTER数据绑定发生才创建。
解决方案:使&#34;采取&#34;值数据类型 DateTime ,这导致图表[显式或隐式]与DateTimeAxis对齐。优化:将轴直接指定给系列,不要将它们添加到Chart.Axes属性中。
感谢@jstreet和@FilipSkakun花时间看这个,感谢您的关注和耐心。
-John