Я пытаюсь создать диаграмму в приложении UWP (используя WinRTXamlToolkit.Controls.DataVisualization.Charting), в то время как должно отображаться несколько пунктирных линий. Однако только ПЕРВАЯ линия — пунктирная, вторая и третья — сплошные. Я что-то не так делаю или это баг? Ниже приведен мой XAML-код и код программной части. Вот чего я не понимаю: если свойство Polyline StrokeThickness работает для всех трех линий (все они достаточно толстые), то почему свойство StrokeDashArray свойства Polyline работает только для первой строки??
Джослан
<Page
x:Class = "TestApp2.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local = "using:TestApp2"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Charting = "using:WinRTXamlToolkit.Controls.DataVisualization.Charting"
mc:Ignorable = "d"
Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Page.Resources>
<Style x:Key = "LineSeriesStyle1" TargetType = "Charting:LineSeries">
<Setter Property = "IsTabStop" Value = "False"/>
<Setter Property = "PolylineStyle">
<Setter.Value>
<Style TargetType = "Polyline">
<Setter Property = "StrokeThickness" Value = "5"/>
<Setter Property = "StrokeMiterLimit" Value = "1"/>
<Setter Property = "StrokeDashArray" Value = "3"/>
</Style>
</Setter.Value>
</Setter>
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate TargetType = "Charting:LineSeries">
<Canvas x:Name = "PlotArea">
<Polyline Points = "{TemplateBinding Points}" Style = "{TemplateBinding PolylineStyle}" Stroke = "{TemplateBinding Background}"/>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<Grid>
<Charting:Chart x:Name = "LineChart" HorizontalAlignment = "Stretch" VerticalAlignment = "Stretch" Margin = "5" ScrollViewer.HorizontalScrollBarVisibility = "Visible" Width = "400" Height = "400">
<Charting:Chart.Axes>
<Charting:LinearAxis x:Name = "Xas" Orientation = "X" Location = "Bottom" Interval = "1" ShowGridLines = "True" Title = "X-as" CanDrag = "True"/>
<Charting:LinearAxis x:Name = "Yas" Orientation = "Y" Location = "Left" Interval = "1" ShowGridLines = "True"/>
</Charting:Chart.Axes>
<Charting:LineSeries x:Name = "Line0" Style = "{StaticResource LineSeriesStyle1}" IndependentValuePath = "X" DependentValuePath = "Y"/>
<Charting:LineSeries x:Name = "Line1" Style = "{StaticResource LineSeriesStyle1}" IndependentValuePath = "X" DependentValuePath = "Y"/>
<Charting:LineSeries x:Name = "Line2" Style = "{StaticResource LineSeriesStyle1}" IndependentValuePath = "X" DependentValuePath = "Y"/>
</Charting:Chart>
</Grid>
Мой код:
using System.Collections.Generic;
с помощью Windows.Foundation; с помощью Windows.UI.Xaml.Controls;
пространство имен TestApp2 { общедоступный закрытый частичный класс MainPage : Page { публичный список l0 {получить; набор; } = новый список(); публичный список l1 {получить; набор; } = новый список(); публичный список l2 {получить; набор; } = новый список();
public MainPage()
{
this.InitializeComponent();
l0.Add(new Point(10, 20));
l0.Add(new Point(11, 21));
l0.Add(new Point(12, 22));
l0.Add(new Point(13, 23));
Line0.ItemsSource=l0;
l1.Add(new Point(10, 30));
l1.Add(new Point(11, 31));
l1.Add(new Point(12, 32));
l1.Add(new Point(13, 33));
Line1.ItemsSource = l1;
l2.Add(new Point(10, 40));
l2.Add(new Point(11, 41));
l2.Add(new Point(12, 42));
l2.Add(new Point(13, 43));
Line2.ItemsSource = l2;
}
}
}





Я проверил ваш код. Как вы упомянули, LineSeriesStyle1 применяется только к первой строке. Это подтвержденная проблема, вы можете найти проблему здесь.
Вы можете установить значение свойства StrokeDashArray в теге Polyline в стиле LineSeriesStyle1, чтобы решить проблему.
Или вы можете найти другое решение, относящееся к случаю .
Спасибо ЯнГу. Вижу проблема давно назрела. Думаю, мне придется подождать, пока команда посмотрит на это...