簡體   English   中英

WinRTXAML圖表,頂部標簽的控件樣式,代碼

[英]WinRTXAML chart, control style for top label, code

我正在使用WinRTXamlToolkit.Controls.DataVisualization.Charting.Chart對象,其相關軸整數為0/1,並且具有獨立的時間軸。 我想隱藏或旋轉圖表頂部的標簽。 在Axis(圖表軸)或系列(LineSeries)上找到樣式嗎? 我的圖表是通過以下代碼段完全配置的:

編輯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>

編輯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)。 我需要弄清楚如何通過代碼設置“ AxisLabel”,“ Panel”,“ AxisGrid”或“ CategoryAxis”的樣式。 在此處輸入圖片說明

任何提示將不勝感激!

-約翰

這不是一個完整的答案,因為我無法告訴您如何使標簽顯示在頂部,但在我看來,這些標簽似乎更多是數據點標簽而不是軸標簽。 運行該工具包的示例應用程序可能會幫助您稍微瀏覽一下UI樹並使其更易於探索。 只需在VS中獲取工具包的源代碼,按F5,打開Chart控件示例,並在指向標簽的同時按Ctrl + Shift。 這是指向類別軸時得到的:

在此處輸入圖片說明

我會在數據點,序列周圍進行搜索,然后搜索一個名為style的屬性。 否則-瀏覽源代碼以查找其設置方式。

我已經解決了我的問題,但沒有達到我期望的結果-更好。

經過大量的試驗后,我了解了有關WinRTXAML圖表的一些知識。 這些觀察純粹是從編碼的角度出發,因為我沒有在頁面中使用靜態XAML。 我是新手,所以如果有人知道這些學習不完整或被誤導了,請輸入以下提示:

  • 如果未預定義適當的軸(在“軸”屬性中),則根據添加的系列動態創建軸。 在進行數據綁定之前,不會創建軸(可以理解,因為圖表需要反映傳入數據的數據類型)。
  • 通過Series對象的IndependentAxis和DependentRangeAxis可以將一系列顯式分配給某個軸。 如果省略,則將基於系列綁定Value的數據類型隱式進行分配。 相反,如果將軸明確分配給系列,則無需將其添加到圖表的“軸”屬性中(但也可以)。
  • 如果將軸顯式分配給與該序列的數據類型沖突的序列,則將產生可怕的誤導性異常。 “無法使用分配的獨立軸。這可能是由於軸的Orientation屬性未設置。”
  • 將為字符串類型的系列值自動生成CategoryAxis,但是當數據類型與現有軸不匹配時,也會自動生成CategoryAxis。 (即,將數據類型轉換為字符串,然后生成/使用CategoryAxis)

將這些知識應用於我的原始問題,這就是發生的事情。 盡管我已經預定義了DateTime軸,但是我輸入的獨立軸的數據類型是DateTimeOffset。 此值被解釋為字符串值,因為它不是DateTime(即沒有隱式轉換)。 這導致圖表生成一個CategoryAxis,將其分配給系列,然后將其放置在圖表的頂部。 不了解這種情況的發生,我不希望該頂部軸上的標簽,因此我試圖抑制它們,但是我找不到該軸,因為它是在發生AFTER數據綁定之前才創建的。

解決方案 :設置數據類型為DateTime的“ taken”值,這會使圖表[顯式或隱式地]與DateTimeAxis對齊。 優化:直接將軸分配給該系列,不必費心將它們添加到Chart.Axes屬性。

感謝@jstreet和@FilipSkakun花時間研究此問題,感謝您的關注和耐心。

-約翰

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM