Пустое исключение для Telerik.UI.Xaml.Controls.Chart.DateTimeContinuousAxis.OnMajorStepUnitChanged
Мой код был разработан, чтобы сделать адаптивные макеты для моего приложения UWP. Мой код:
<Page x:Name="load"
x:Class="ServerMonitor.Views.SiteDetail"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="using:ServerMonitor.ViewModels"
xmlns:controls="using:Template10.Controls"
xmlns:telerik="using:Telerik.UI.Xaml.Controls.Chart"
xmlns:telerikPrimitives="using:Telerik.UI.Xaml.Controls.Primitives"
xmlns:local1="using:ServerMonitor"
mc:Ignorable="d" Loading="{x:Bind ViewModel.load_Loading}">
<Page.DataContext>
<vm:SiteDetailViewModel x:Name="ViewModel"/>
</Page.DataContext>
<Page.Resources>
<vm:Log10Convert x:Key="Log10Convert"/>
</Page.Resources>
<RelativePanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="600"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="HorizontalAxis.MajorStep" Value="{x:Bind ViewModel.Infos.FirstChartAxisProperties.Min.MajorStep,Mode=OneWay}"/>
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1200"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="HorizontalAxis.MajorStep" Value="{x:Bind ViewModel.Infos.FirstChartAxisProperties.Mid.MajorStep,Mode=OneWay}"/>
</VisualState.Setters>
</VisualState>
<VisualState>
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="1500"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="HorizontalAxis.MajorStep" Value="{x:Bind ViewModel.Infos.FirstChartAxisProperties.Max.MajorStep,Mode=OneWay}"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<!-- header -->
<controls:PageHeader x:Name="pageHeader" Frame="{x:Bind Frame}"
RelativePanel.AlignLeftWithPanel="True"
RelativePanel.AlignRightWithPanel="True"
RelativePanel.AlignTopWithPanel="True" Text="SiteDetail Page" >
<controls:PageHeader.PrimaryCommands>
<AppBarButton x:Name="EditButton" Icon="Edit" Foreground="White"/>
<AppBarButton x:Name="RefreshButton" Icon="Refresh" Foreground="white" Click="{x:Bind ViewModel.Refresh_Click}"/>
</controls:PageHeader.PrimaryCommands>
<controls:PageHeader.SecondaryCommands>
<AppBarButton Label="Clear Log" x:Name="ClearLogButton" Click="{x:Bind ViewModel.ClearLog}"/>
</controls:PageHeader.SecondaryCommands>
</controls:PageHeader>
<!-- content -->
<ScrollViewer Padding="24,24,24,0" RelativePanel.AlignBottomWithPanel="True"
RelativePanel.AlignLeftWithPanel="True"
RelativePanel.AlignRightWithPanel="True"
RelativePanel.Below="pageHeader"
IsScrollInertiaEnabled="True"
VerticalScrollBarVisibility="Auto">
<StackPanel Orientation="Vertical">
<Pivot Grid.Row="0" SelectedIndex="0" SelectionChanged="{x:Bind ViewModel.Pivot_SelectionChanged}">
<PivotItem Header="Today">
</PivotItem>
<PivotItem Header="Three Days">
</PivotItem>
<PivotItem Header="Seven Days">
</PivotItem>
</Pivot>
<StackPanel
Margin="0,0,0,48">
<ToggleSwitch x:Name="toggled" HorizontalAlignment="Right" IsOn="{x:Bind ViewModel.Infos.IsMonitor,Mode=TwoWay}" Toggled="{x:Bind ViewModel.test}">
<ToggleSwitch.OffContent>Close Monitor</ToggleSwitch.OffContent>
<ToggleSwitch.OnContent>Open Monitor</ToggleSwitch.OnContent>
</ToggleSwitch>
<telerik:RadCartesianChart x:Name="RequestTimeBarChar"
PaletteName="DefaultLight"
Margin="0,10,0,10"
Height="300"
>
<telerik:RadCartesianChart.Resources>
<local1:CustomConverter x:Key="Converter"/>
<local1:CustomConverterBrush x:Key="BrushConverter"/>
</telerik:RadCartesianChart.Resources>
<!--end-->
<telerik:RadCartesianChart.Annotations>
<telerik:CartesianGridLineAnnotation
Axis="{Binding Path=VerticalAxis, ElementName=RequestTimeBarChar}"
Value="{x:Bind ViewModel.Infos.MedianValue,Mode=TwoWay}"
Stroke="RoyalBlue"
StrokeThickness="3"
BorderBrush="Black"
BorderThickness="2"
/>
<telerik:CartesianGridLineAnnotation
Axis="{Binding Path=VerticalAxis, ElementName=RequestTimeBarChar}"
Value="{x:Bind ViewModel.Infos.AverageValue,Mode=TwoWay}"
Stroke="Purple"
StrokeThickness="3"
BorderBrush="Black"
BorderThickness="2"
/>
<telerik:CartesianCustomAnnotation VerticalAlignment="Center" HorizontalAlignment="Right"
VerticalOffset="200" HorizontalOffset="100"
HorizontalAxis="{Binding Path=HorizontalAxis, ElementName=RequestTimeBarChar}"
VerticalAxis="{Binding Path=VerticalAxis, ElementName=RequestTimeBarChar}"
Content="This is custom annotation without ContentTemplate" />
</telerik:RadCartesianChart.Annotations>
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:DateTimeContinuousAxis Maximum="{x:Bind ViewModel.Infos.MaxmumDatetime,Mode=OneWay}"
Minimum="{x:Bind ViewModel.Infos.MinmumDatetime,Mode=OneWay}"
GapLength="0.5"
MajorStep="{Binding Infos.FirstChartAxisProperties.Min.MajorStep,Mode=OneWay}"
MajorStepUnit="{Binding Infos.FirstChartAxisProperties.Min.MajorStepUnit1,Mode=OneWay}"
LabelFormat="{}{0,0:MM-dd HH:mm}"
x:Name="HorizontalAxis"
Title="Datetime of request"
/>
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:LinearAxis Title="Request Interval(ln x)"
x:Name="VerticalAxis">
</telerik:LinearAxis>
</telerik:RadCartesianChart.VerticalAxis>
<!-- end -->
<telerik:RadCartesianChart.Behaviors>
<telerik:ChartTooltipBehavior>
<telerik:ChartTooltipBehavior.ContentTemplate>
<DataTemplate>
<Border BorderBrush="#80D6F4" BorderThickness="1">
<StackPanel Background="white">
<TextBlock Text="{Binding DataPoint.Value, Converter={StaticResource Converter}, ConverterParameter=Value}" Foreground="#99441D"/>
<TextBlock Text="{Binding DataPoint.Category, Converter={StaticResource Converter}, ConverterParameter=Category}" Foreground="#506005"/>
</StackPanel>
</Border>
<!-- end -->
</DataTemplate>
<!--end-->
</telerik:ChartTooltipBehavior.ContentTemplate>
<!--end-->
</telerik:ChartTooltipBehavior>
<!--end-->
</telerik:RadCartesianChart.Behaviors>
<!--end-->
<telerik:RadCartesianChart.Grid>
<telerik:CartesianChartGrid MajorLinesVisibility="XY" StripLinesVisibility="XY">
</telerik:CartesianChartGrid>
<!--end-->
</telerik:RadCartesianChart.Grid>
<!--end-->
<telerik:BarSeries ItemsSource="{x:Bind Path=ViewModel.Infos.RequestTimeList,Mode=TwoWay}"
PaletteMode="Series"
>
<telerik:BarSeries.ValueBinding>
<telerik:PropertyNameDataPointBinding PropertyName="Request_time" />
</telerik:BarSeries.ValueBinding>
<telerik:BarSeries.CategoryBinding>
<telerik:PropertyNameDataPointBinding PropertyName="Create_time"/>
</telerik:BarSeries.CategoryBinding>
</telerik:BarSeries>
</telerik:RadCartesianChart>
<StackPanel HorizontalAlignment="Center"
Orientation="Horizontal"
Margin="0,24,0,24">
<TextBox Text="{x:Bind ViewModel.Infos.Median_string,Mode=TwoWay}"
Width="200" Height="80"
Background="RoyalBlue" Foreground="White"
IsReadOnly="true"/>
<TextBox Text="{x:Bind ViewModel.Infos.Average_string,Mode=TwoWay}"
Width="200" Height="80"
Background="Purple" Foreground="White"
IsReadOnly="true"/>
</StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<telerik:RadCartesianChart PaletteName="DefaultLight"
Margin="0,10,0,10"
Height="300"
Grid.Column="0">
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:LinearAxis Title="Request Times"/>
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:CategoricalAxis Title="Request Status"/>
</telerik:RadCartesianChart.VerticalAxis>
<telerik:RadCartesianChart.Grid>
<telerik:CartesianChartGrid MajorLinesVisibility="X"
StripLinesVisibility="X"/>
</telerik:RadCartesianChart.Grid>
<telerik:BarSeries ItemsSource="{x:Bind Path=ViewModel.Infos.Re}"
ShowLabels="True">
<telerik:BarSeries.ValueBinding>
<telerik:PropertyNameDataPointBinding PropertyName="Count"/>
</telerik:BarSeries.ValueBinding>
<telerik:BarSeries.CategoryBinding>
<telerik:PropertyNameDataPointBinding PropertyName="RequestStatus"/>
</telerik:BarSeries.CategoryBinding>
</telerik:BarSeries>
</telerik:RadCartesianChart>
<StackPanel Orientation="Vertical"
Grid.Column="1">
<telerik:RadPieChart Height="300"
PaletteName="DefaultDark"
Width="250"
x:Name="AnalysisPeiChart"
Margin="0,10,0,10"
>
<telerik:PieSeries ShowLabels="True"
RadiusFactor="0.8"
ItemsSource="{x:Bind Path=ViewModel.Infos.Pieinfo}">
<telerik:PieSeries.ValueBinding>
<telerik:PropertyNameDataPointBinding PropertyName="Count"/>
</telerik:PieSeries.ValueBinding>
<telerik:PieSeries.LegendTitleBinding>
<telerik:PropertyNameDataPointBinding PropertyName="Ry"/>
</telerik:PieSeries.LegendTitleBinding>
</telerik:PieSeries>
</telerik:RadPieChart>
<telerikPrimitives:RadLegendControl LegendProvider="{x:Bind Path=AnalysisPeiChart}">
<telerikPrimitives:RadLegendControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</telerikPrimitives:RadLegendControl.ItemsPanel>
<telerikPrimitives:RadLegendControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<Rectangle Fill="{Binding Fill}" Stroke="{Binding Stroke}"
StrokeThickness="1" Width="10" Height="10" />
<TextBlock Text="{Binding Title}" Foreground="{Binding Fill}"
Margin="10" FontStyle="Normal"/>
</StackPanel>
</DataTemplate>
</telerikPrimitives:RadLegendControl.ItemTemplate>
</telerikPrimitives:RadLegendControl>
</StackPanel>
</Grid>
</StackPanel>
<StackPanel Grid.Row="1"
Margin="0,48,0,0">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Left">
<TextBox Text="WebSite URL: " BorderThickness="0" FontSize="20"/>
<HyperlinkButton Grid.Column="0" Grid.Row="0"
IsEnabled="{x:Bind ViewModel.Infos.IsWebSite}"
Grid.ColumnSpan="3" HorizontalAlignment="Center"
VerticalAlignment="Center" NavigateUri="{x:Bind ViewModel.Infos.Detail_Site.Site_address}"
Content="{x:Bind ViewModel.Infos.Detail_Site.Site_address}" FontSize="20" Foreground="#FFE61D1D"/>
</StackPanel>
<Grid BorderThickness="1">
<Grid.RowDefinitions>
<RowDefinition Height="24"/>
<RowDefinition Height="24"/>
<RowDefinition Height="24"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Grid.Row="0" Text="Last Request" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0" IsReadOnly="True"/>
<TextBox Grid.Column="1" Grid.Row="0" Text="Status" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0" IsReadOnly="True"/>
<TextBox Grid.Column="2" Grid.Row="0" Text="Date" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0" IsReadOnly="True"/>
<Rectangle Fill="#aaa" VerticalAlignment="Top" Height="1" Grid.Row="0" Grid.ColumnSpan="3"/>
<TextBox Grid.Column="0" Grid.Row="1" Text="Previous" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0" IsReadOnly="True"/>
<TextBox Grid.Column="1" Grid.Row="1" Text="{x:Bind ViewModel.Infos.LastRequestWords,Mode=TwoWay}" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0" IsReadOnly="True"/>
<TextBox Grid.Column="2" Grid.Row="1" Text="{x:Bind ViewModel.Infos.LastRequest.Create_time,Mode=TwoWay}" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0" IsReadOnly="True"/>
<Rectangle Fill="#aaa" VerticalAlignment="Top" Height="1" Grid.Row="1" Grid.ColumnSpan="3"/>
<TextBox Grid.Column="0" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0"/>
<TextBox Grid.Column="1" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0"/>
<TextBox Grid.Column="2" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0"/>
</Grid>
<TextBox Text="Contact" FontSize="20" BorderThickness="0"/>
<Rectangle Fill="#aaa" VerticalAlignment="Top" Height="2" />
<GridView>
<GridViewItem>
<TextBox IsReadOnly="True" Text="联系人模块"/>
</GridViewItem>
</GridView>
</StackPanel>
</StackPanel>
</ScrollViewer>
</RelativePanel>
И что меня прервало, так это то, что при запуске приложения всегда выдается исключение NullException. Однако я почти уверен, что произвел инициализацию переменных.
Вот мой код:
public void ChangeStepUnitStep(int index)
{
switch (index)
{
case 0:
Infos.FirstChartAxisProperties.Min.MajorStep = 6;
Infos.FirstChartAxisProperties.Min.MajorStepUnit1 = TimeInterval.Hour;
Infos.FirstChartAxisProperties.Mid.MajorStep = 4;
Infos.FirstChartAxisProperties.Mid.MajorStepUnit1 = TimeInterval.Hour;
Infos.FirstChartAxisProperties.Max.MajorStep = 2;
Infos.FirstChartAxisProperties.Max.MajorStepUnit1 = TimeInterval.Hour;
break;
case 1:
Infos.FirstChartAxisProperties.Min.MajorStep = 1.5;
Infos.FirstChartAxisProperties.Min.MajorStepUnit1 = TimeInterval.Day;
Infos.FirstChartAxisProperties.Mid.MajorStep = 1;
Infos.FirstChartAxisProperties.Mid.MajorStepUnit1 = TimeInterval.Day;
Infos.FirstChartAxisProperties.Max.MajorStep = 12;
Infos.FirstChartAxisProperties.Max.MajorStepUnit1 = TimeInterval.Hour;
break;
case 2:
Infos.FirstChartAxisProperties.Min.MajorStep = 3;
Infos.FirstChartAxisProperties.Min.MajorStepUnit1 = TimeInterval.Day;
Infos.FirstChartAxisProperties.Mid.MajorStep = 2;
Infos.FirstChartAxisProperties.Mid.MajorStepUnit1 = TimeInterval.Day;
Infos.FirstChartAxisProperties.Max.MajorStep = 1;
Infos.FirstChartAxisProperties.Max.MajorStepUnit1 = TimeInterval.Day;
break;
default:
break;
}
}
public void load_Loading(FrameworkElement sender, object args)
{
Infos.FirstChartAxisProperties = new FirstChartAxisProperties();
ChangeStepUnitStep(0);
Debug.WriteLine("load_Loading() Excute!");
}
Я понятия не имею, чтобы справиться с этим. Кто-нибудь может мне помочь? Пожалуйста!