Hi Telerik,
I have two Control Panel Items set in a single style for all my grids. The column chooser icon that comes out of the box looks fine. but I can't find where I can change the other one. Where can I learn more about how those icons are defined? I would like some sort of an arrow pointing down.
Here is the code for the ControlPanelItemCollection
<telerik:ControlPanelItemCollection> <telerik:ControlPanelItem> <telerik:ControlPanelItem.ButtonContent> <Path Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" Data="F1M511.6665,467.2715C509.6575,468.2995,507.1905,467.5095,506.1635,465.5005C505.1325,463.4915,505.9265,461.0325,507.9355,460.0005C509.9445,458.9745,512.4095,459.7695,513.4375,461.7745C514.4695,463.7825,513.6775,466.2405,511.6665,467.2715 M518.5605,462.8565L517.8825,460.0155L515.3935,460.2825C515.1415,459.8585,514.8505,459.4725,514.5225,459.1275L515.4435,456.8975L512.9515,455.3645L511.3965,457.2925C510.8575,457.1515,510.3025,457.0815,509.7415,457.0775L508.7675,454.9135L505.9375,455.6715L506.2705,458.0665C505.8795,458.3075,505.5215,458.5835,505.2025,458.8835L503.0535,458.0005L501.5175,460.4875L503.3665,461.9795C503.2315,462.4865,503.1515,463.0135,503.1415,463.5435L501.0335,464.4175L501.7125,467.2605L504.0635,467.0085C504.3355,467.4795,504.6545,467.9065,505.0235,468.2815L504.1575,470.3765L506.6475,471.9095L508.1425,470.0605C508.6495,470.1855,509.1655,470.2555,509.6925,470.2615L510.5785,472.3905L513.4255,471.7135L513.1675,469.2965C513.6075,469.0285,514.0145,468.7215,514.3635,468.3765L516.5455,469.2745L518.0815,466.7855L516.1495,465.2305C516.2665,464.7565,516.3315,464.2705,516.3385,463.7805z" Stretch="Fill" /> </telerik:ControlPanelItem.ButtonContent> <telerik:ControlPanelItem.Content> <Button Content="Export to Excel (incompleted feature)"></Button> </telerik:ControlPanelItem.Content> </telerik:ControlPanelItem> <telerik:ControlPanelItem ButtonTooltip="Column chooser" > <telerik:ControlPanelItem.ContentTemplate> <DataTemplate> <ListBox ItemsSource="{Binding VisibleColumns}" BorderThickness="0"> <ListBox.ItemTemplate> <DataTemplate> <CheckBox Content="{Binding Header, Mode=OneWay}" IsChecked="{Binding IsVisible, Mode=TwoWay}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox> </DataTemplate> </telerik:ControlPanelItem.ContentTemplate> </telerik:ControlPanelItem> </telerik:ControlPanelItemCollection>
By the way, I dont get what is all this "Data". I just left it there from one of your samples, if you might as well please clarify this for me?
Thank you
How to set the max length of a PropertyDefinition
Like the textbox' s maxlength property
Hi,
Is there an example anywhere of a user being able to click on a chart and auto-create a text annotation based on a double-click or a right-click?
They would need to be able to add multiple annotations.
They would need to be able to delete annotations (i.e. right click on the annotation itself to delete).
We need the ability for users to create their own annotations directly within the chart area..
Thanks,
Barry

Hi,
Is there an example anywhere of a user being able to click on a chart and auto-create a line annotation based on when the mouse button went down and where it went back up again after the mouse was dragged ?
This seems tantamount to drawing a straight line and then adding a label to it.
They would need to be able to add multiple lines.
They would need to be able to delete lines.
We need the ability for users to create their own annotations directly within the chart area, using their mouse.
Thanks,
Barry

In response to a button command my VM inserts a record at index 0 into the observablecollection that is bound to the gridview.
Now that I have it in the collection a new row automagically appears in the radgrid at the beginning. I'm trying to be a good boy and keep knowledge of my UI out of the VM. My gridview is marked as IsReadOnly = true. I only allow editing via raddataform attached to the rowdetails. My questions are:
1. How to automatically expand the row details of a newly inserted row (using MVVM)?
2. Once they hit update the newly added row seems to be moved by the gridview to it's rightful place in the sort order. This is great.However, if you are using datapager the row could be moved to an unknown page leaving the user wondering where their new record went. I know there is a ScrollIntoView function, but I'm not sure I should be using that in a VM. Even if I did, how would I know what row to scroll to after it's been resorted? So, how can I get a newly added, newly sorted row to scroll to be the first row visible regardless of which page in the pager it lands and have it's rowdetail editor expanded using MVVM?
Any help would be greatly appreciated.
Thanks ... Ed
Hello!
- Setting Telerik.Windows.Controls.MultidayViewDefinition.MinorTickLength to Zero causes a ContextSwitchDeadlock during debugging and freezes the application when having the respective ViewDefinition active or on switching to the particular ViewDefinition.
- Setting Telerik.Windows.Controls.MultidayViewDefinition.MajorTickLength or Telerik.Windows.Controls.TimelineViewDefinition.GroupTickLength to Zero both cause a System.OutOfMemoryException when having the respective ViewDefinition active or on switching to the particular ViewDefinition.
- In XAML, when setting the MinorTickLength="0min" of the first and currently in the Designer active ViewDefinition will cause Visual Studio to freeze up entirely and needs to be terminated via the TaskManager.
- In XAML, when setting the MajorTickLength="0min" or GroupTickLength="0min" of the first and currently in the Designer active ViewDefinition will render Visual Studio unresponsive for a few seconds until displaying that a System.OutOfMemoryException has occurred.
Here's my example code to reproduce the crashes and freezes:
<Window x:Class="WpfApplicationProgressTelerik.MainWindow" xmlns:local="clr-namespace:WpfApplicationProgressTelerik" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.Resources> <local:MyViewModel x:Key="MyViewModel" /> </Grid.Resources> <StackPanel> <telerik:RadButton Content="Click Me!" DataContext="{StaticResource MyViewModel}" Command="{Binding Command}" /> <telerik:RadScheduleView DataContext="{StaticResource MyViewModel}" AppointmentsSource="{Binding Appointments}"> <telerik:RadScheduleView.ViewDefinitions> <telerik:DayViewDefinition MinorTickLength="{Binding DayViewDefinitionMinorTickLength}" MajorTickLength="{Binding DayViewDefinitionMajorTickLength}" /> <telerik:WeekViewDefinition MinorTickLength="{Binding WeekViewDefinitionMinorTickLength}" MajorTickLength="{Binding WeekViewDefinitionMajorTickLength}" /> <telerik:TimelineViewDefinition MajorTickLength="{Binding TimelineViewDefinitionMajorTickLength}" MinorTickLength="{Binding TimelineViewDefinitionMinorTickLength}" GroupTickLength="{Binding TimelineViewDefinitionGroupTickLength}" /> </telerik:RadScheduleView.ViewDefinitions> </telerik:RadScheduleView> </StackPanel> </Grid></Window>
using System;using System.Collections.ObjectModel;using System.Windows.Input;using Telerik.Windows.Controls;using Telerik.Windows.Controls.ScheduleView;namespace WpfApplicationProgressTelerik{ internal class MyViewModel : ViewModelBase { private ObservableCollection<Appointment> appointments; public ObservableCollection<Appointment> Appointments { get { if (this.appointments == null) { this.appointments = this.CreateAppointments(); } return this.appointments; } } private ObservableCollection<Appointment> CreateAppointments() { var apps = new ObservableCollection<Appointment>(); var app1 = new Appointment { Subject = "Front-End Meeting", Start = DateTime.Today.AddHours(9), End = DateTime.Today.AddHours(10) }; apps.Add(app1); var app2 = new Appointment { Subject = "Planning Meeting", Start = DateTime.Today.AddHours(11), End = DateTime.Today.AddHours(12) }; apps.Add(app2); return apps; } public ICommand Command { get; } public ITickProvider DayViewDefinitionMinorTickLength { get; private set; } public ITickProvider DayViewDefinitionMajorTickLength { get; private set; } public ITickProvider WeekViewDefinitionMinorTickLength { get; private set; } public ITickProvider WeekViewDefinitionMajorTickLength { get; private set; } public ITickProvider TimelineViewDefinitionMinorTickLength { get; private set; } public ITickProvider TimelineViewDefinitionMajorTickLength { get; private set; } public ITickProvider TimelineViewDefinitionGroupTickLength { get; private set; } internal MyViewModel() { Command = new DelegateCommand(SetTickProvider); } private void SetTickProvider(object obj) { DayViewDefinitionMinorTickLength = new FixedTickProvider(DateTimeInterval.Zero); DayViewDefinitionMajorTickLength = new FixedTickProvider(DateTimeInterval.Zero); WeekViewDefinitionMinorTickLength = new FixedTickProvider(DateTimeInterval.Zero); WeekViewDefinitionMajorTickLength = new FixedTickProvider(DateTimeInterval.Zero); TimelineViewDefinitionMinorTickLength = new FixedTickProvider(DateTimeInterval.Zero); TimelineViewDefinitionMajorTickLength = new FixedTickProvider(DateTimeInterval.Zero); TimelineViewDefinitionGroupTickLength = new FixedTickProvider(DateTimeInterval.Zero); OnPropertyChanged(nameof(DayViewDefinitionMinorTickLength)); //ContextSwitchDeadlock OnPropertyChanged(nameof(DayViewDefinitionMajorTickLength)); //System.OutOfMemoryException OnPropertyChanged(nameof(WeekViewDefinitionMinorTickLength)); //ContextSwitchDeadlock OnPropertyChanged(nameof(WeekViewDefinitionMajorTickLength)); //System.OutOfMemoryException OnPropertyChanged(nameof(TimelineViewDefinitionMinorTickLength)); //ContextSwitchDeadlock OnPropertyChanged(nameof(TimelineViewDefinitionMajorTickLength)); //System.OutOfMemoryException OnPropertyChanged(nameof(TimelineViewDefinitionGroupTickLength)); //System.OutOfMemoryException } }}
In my opinion it would be helpful to immediately throw a System.ArgumentOutOfRangeException when setting an invalid (or even better when creating an invalid instance of) Telerik.Windows.Controls.ScheduleView.ITickProvider.
What do you think?
Best wishes!
I saw there was a post about this several years back, but the OP never followed up..
I am getting the " System.Windows.Media.Animation Warning: 6 : Unable to perform action because the specified Storyboard was never applied to this object for interactive control.; Action='Stop'; Storyboard='System.Windows.Media.Animation.Storyboard'; Storyboard.HashCode='11303829'; Storyboard.Type='System.Windows.Media.Animation.Storyboard'; TargetElement='System.Windows.Media.Animation.Storyboard'; TargetElement.HashCode='11303829'; TargetElement.Type='System.Windows.Media.Animation.Storyboard' "
I have tried everything I can think of (hopefully not missing something small and silly..).
Here is the storyboard itself in the UserCont
<Storyboard x:Key="FlashingPanel" RepeatBehavior="Forever" AutoReverse="True"> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="TaskPanelItem"> <EasingDoubleKeyFrame KeyTime="0:0:0.8" Value="0" /> </DoubleAnimationUsingKeyFrames></Storyboard>
Here is the 'grid' section that utilizes the storyboard.
<Grid Grid.Column="1" Grid.Row="1"> <telerik:RadPanelBar x:Name="TaskRadPanel" Background="{StaticResource UserControlbackground}" Width="Auto" Height="Auto" Orientation="Horizontal" Margin="5, 8, 5, 10" BorderBrush="Transparent" FocusVisualStyle="{x:Null}" ItemContainerStyle="{StaticResource TaskRadPanelItemStyle}"> <telerik:RadPanelBarItem x:Name="TaskPanelItem" HeaderTemplate="{StaticResource MyTaskHeaderTemplate}" HorizontalContentAlignment="Right"> <telerik:RadPanelBarItem.Triggers> <EventTrigger RoutedEvent="FrameworkElement.Loaded"> <EventTrigger.Actions> <BeginStoryboard x:Name="MyFlashingStory" Storyboard.TargetName="TaskPanelItem" Storyboard="{StaticResource FlashingPanel}"/> </EventTrigger.Actions> </EventTrigger> </telerik:RadPanelBarItem.Triggers> <i:Interaction.Triggers> <ei:DataTrigger Binding="{Binding MyTeamHasTasks, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="True"> <ei:ControlStoryboardAction Storyboard="{StaticResource FlashingPanel}" ControlStoryboardOption="Play" /> </ei:DataTrigger> <ei:DataTrigger Binding="{Binding MyTeamHasTasks, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Value="False"> <ei:ControlStoryboardAction Storyboard="{StaticResource FlashingPanel}" ControlStoryboardOption="Pause" /> </ei:DataTrigger> <i:EventTrigger EventName="Expanded" SourceName="TaskPanelItem"> <ei:ControlStoryboardAction Storyboard="{StaticResource FlashingPanel}" ControlStoryboardOption="Stop" /> </i:EventTrigger> <i:EventTrigger EventName="Collapsed" SourceName="TaskPanelItem"> <ei:ControlStoryboardAction Storyboard="{StaticResource FlashingPanel}" ControlStoryboardOption="Play" /> </i:EventTrigger> </i:Interaction.Triggers> <telerik:RadListBox ItemsSource="{Binding MyTeamTaskList}" > <telerik:RadListBox.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" /> </ItemsPanelTemplate> </telerik:RadListBox.ItemsPanel> <telerik:RadListBox.ItemTemplate> <DataTemplate> <Grid> <TextBlock Text="{Binding Description}" FontFamily="Sengo UI" FontSize="14" VerticalAlignment="Center" Foreground="RoyalBlue" /> </Grid> </DataTemplate> </telerik:RadListBox.ItemTemplate> </telerik:RadListBox> </telerik:RadPanelBarItem> </telerik:RadPanelBar> </Grid>
MyTeamHasTasks is a boolean in my ViewModel.
First EventTrigger Expanded: ControlStoryboardAction: Stop - Throws System.Windows.Media.Animation Warning: 6.
Second EventTrigger Collapsed: ControlStoryboardAction: Play - Works fine.
If I expand the TaskPanel again (firing the first eventtrigger from above) everything works as it should at this point and on..
BUT the VERY first time the ControlStoryboardAction: Stop is executed, it gives the System.Windows.Media.Animation Warning: 6.
For testing purposes, I replaced the binding boolean field (MyTeamHasTasks) with a checkbox and then bound the checkbox to the boolean field (MyTeamHasTasks), this route does not give me any issues... Makes me wonder why it doesn't work they way I initially implemented it as it achieves the same thing.
Any idea as to how I can get around this? I do not think this is a bug, I feel like I have possibly not implemented this accurately.
I'd like to do this without ANY code-behind.

I just want to disable (grayed-out, un-clickable) the "funnel" icon of the filter on the radgridview header and not HIDE it.
Is there easy way to do it without creating a custom filter?
Cheers
I use Remote Desktop Connection to connect another desktop
and run my program. in my program, I have a PanelBar.
I chose an item inside the PanelBarItem.
when I reconnect by RDC, suddenly selected item unselect.
I attached a project to show my problem:
https://www.mediafire.com/?2fg3d2240pe6dbt
Please help me.
Thanks.

Hello. I have the following XAML markup:
<UserControl x:Class="UltrasonicSensors.Views.UltrasonicSensorsView" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:prism="http://prismlibrary.com/" prism:ViewModelLocator.AutoWireViewModel="True"> <UserControl.Resources> <!--Spline series style--> <Style x:Key="SplineSeriesStyle" TargetType="telerik:SplineSeries"> <Setter Property="Stroke" Value="RoyalBlue"/> <Setter Property="StrokeThickness" Value="3"/> </Style> <!--Content template of each RadTileViewItem--> <DataTemplate x:Key="ContentTemplate"> <telerik:RadCartesianChart x:Name="chart1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" EmptyContent="{Binding ChartEmptyContent}"> <!--Turn scrollbar off--> <telerik:RadCartesianChart.Resources> <Style TargetType="telerik:PanZoomBar"> <Setter Property="Visibility" Value="Collapsed"/> </Style> </telerik:RadCartesianChart.Resources> <!-- X-axis --> <telerik:RadCartesianChart.HorizontalAxis> <telerik:CategoricalAxis LabelInterval="6"/> </telerik:RadCartesianChart.HorizontalAxis> <!-- Y-axis --> <telerik:RadCartesianChart.VerticalAxis> <telerik:LinearAxis Minimum="-128" Maximum="127" MajorStep="8" /> </telerik:RadCartesianChart.VerticalAxis> <!--Spline series itself--> <telerik:SplineSeries CategoryBinding="Item1" ValueBinding="Item2" ItemsSource="{Binding SensorData}" Style="{StaticResource SplineSeriesStyle}"/> <!--Layout grid--> <telerik:RadCartesianChart.Grid> <telerik:CartesianChartGrid MajorLinesVisibility="XY" StripLinesVisibility="XY" IsTabStop="False"> <telerik:CartesianChartGrid.YStripeBrushes> <SolidColorBrush Color="#FFD7D7D7" Opacity="0.3" /> <SolidColorBrush Color="Transparent" /> </telerik:CartesianChartGrid.YStripeBrushes> <telerik:CartesianChartGrid.XStripeBrushes> <SolidColorBrush Color="#FFD7D7D7" Opacity="0.3" /> <SolidColorBrush Color="Transparent" /> </telerik:CartesianChartGrid.XStripeBrushes> </telerik:CartesianChartGrid> </telerik:RadCartesianChart.Grid> <!--Panning and zooming--> <telerik:RadCartesianChart.Behaviors> <telerik:ChartPanAndZoomBehavior DragMode="Pan" ZoomMode="Both" PanMode="Both"/> </telerik:RadCartesianChart.Behaviors> </telerik:RadCartesianChart> </DataTemplate> </UserControl.Resources> <Grid> <!--Ultrasonic sensors signals charts:--> <telerik:RadTileView Grid.Row="0" Grid.Column="0" PreservePositionWhenMaximized="True" MinimizedColumnWidth="150" ItemsSource="{Binding SensorSignalCharts}" DisplayMemberPath="ChartCaption" ContentTemplate="{StaticResource ContentTemplate}"> </telerik:RadTileView> </Grid></UserControl>For the RadCartesianChart above I have the following ViewModel:
using Prism.Mvvm;using System;using Telerik.Windows.Data;namespace UltrasonicSensors.ViewModels{ /// <summary> /// Ultrasonic sensor signal ViewModel. /// </summary> public class SensorSignalChartViewModel : BindableBase { #region Fields /// <summary> /// Ultrasonic sensor signal chart point collection. /// </summary> private RadObservableCollection<Tuple<int, double>> _sensorData; /// <summary> /// Data missing Message. /// </summary> private object _chartEmptyContent; /// <summary> /// Chart header. /// </summary> private string _caption; #endregion #region Constructors /// <summary> /// Create instance of SensorSignalViewModel. /// </summary> /// <param name="aSensorData">Ultrasonic sensor signal chart point collection.</param> public SensorSignalChartViewModel(Tuple<int, double>[] aSensorData) { this.SensorData = new RadObservableCollection<Tuple<int, double>>(aSensorData); } #endregion #region Properties /// <summary> /// Gets or sets ultrasonic sensor signal chart point collection. /// </summary> public RadObservableCollection<Tuple<int, double>> SensorData { get { return this._sensorData; } set { this.SetProperty(ref this._sensorData, value); } } /// <summary> /// Gets or sets data missing message. /// </summary> public object ChartEmptyContent { get { return this._chartEmptyContent; } set { this.SetProperty(ref this._chartEmptyContent, value); } } /// <summary> /// Gets or sets chart header. /// </summary> public string ChartCaption { get { return this._caption; } set { this.SetProperty(ref this._caption, value); } } #endregion }}As you can see above, RadCartesianChart in "ContentTemplate" DataTemplate is bound to this ViewModel. And there is another ViewModel called UltrasonicSensorsViewModel which contain RadObservableCollection of SensorSignalChartViewModel. Please see it below:
/// <summary>/// ViewModel of charts of ultrasonic sensors signals./// </summary>public class UltrasonicSensorsViewModel : BindableBase, IConfirmNavigationRequest{ #region Fields #region Constant Fields /// <summary> /// Data missing message. /// </summary> private const string NO_DATA_FOR_CHART = "Нет данных для построения графика"; /// <summary> /// Number of points in each signal chart. /// </summary> private const int CHART_POINTS_QUANTITY = 180; #endregion #region Common Variable Fields /// <summary> /// Ultrasonic sensors quantity. /// </summary> private int _sensorsQuantity; /// <summary> /// Collection of sensorSignalChartViewModel instances. /// </summary> private RadObservableCollection<SensorSignalChartViewModel> _sensorSignalCharts; /// <summary> /// Sensors polling timer. /// </summary> private Timer _sensorsPollingTimer; /// <summary> /// Timer period in millisecond. /// </summary> private long _pollingPeriod = 500; #endregion #endregion #region Constructors public UltrasonicSensorsViewModel() { // This is dummy data to simulate (imitate) each chart. byte[] aDummyData = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0x00, 0x01, 0x03, 0x02, 0x01, 0x00, 0xFD, 0xFC, 0xFD, 0x00, 0x04, 0x06, 0x07, 0x03, 0xFD, 0xF7, 0xF3, 0xF6, 0x00, 0x0B, 0x14, 0x15, 0x0C, 0xFC, 0xEA, 0xDF, 0xE2, 0xF4, 0x0E, 0x26, 0x2F, 0x24, 0x07, 0xE4, 0xCA, 0xC6, 0xDB, 0x01, 0x2B, 0x44, 0x41, 0x22, 0xF3, 0xC8, 0xB4, 0xBF, 0xE6, 0x18, 0x41, 0x4E, 0x3B, 0x10, 0xE0, 0xBE, 0xB8, 0xCF, 0xF9, 0x23, 0x3E, 0x3E, 0x26, 0x01, 0xDF, 0xCD, 0xCF, 0xE5, 0x01, 0x1A, 0x27, 0x23, 0x13, 0x00, 0xEF, 0xE7, 0xE9, 0xF2, 0xFE, 0x08, 0x0D, 0x0E, 0x0B, 0x06, 0x01, 0xFD, 0xF9, 0xF6, 0xF6, 0xF8, 0xFD, 0x03, 0x0A, 0x0E, 0x0D, 0x07, 0xFF, 0xF5, 0xF0, 0xF0, 0xF7, 0x00, 0x0A, 0x10, 0x0E, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; this.SensorSignalCharts = new RadObservableCollection<SensorSignalChartViewModel>(); Tuple<int, double>[] aSensorData = new Tuple<int, double>[CHART_POINTS_QUANTITY]; // Create array of chart data (i==X, aDummyData[i] == Y) for (int i = 0; i < aDummyData.Length; i++) aSensorData[i] = new Tuple<int, double>(i, aDummyData[i]); // Create eight (8) RadTileViewItems. The content of each RadTileViewItem is a chart with simulating data SensorSignalChartViewModel sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от первого сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от второго сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от третьего сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от четвёртого сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от пятого сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от шестого сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от седьмого сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); sscm = new SensorSignalChartViewModel(aSensorData); sscm.ChartCaption = "График сигнала от восмого сенсора"; sscm.ChartEmptyContent = NO_DATA_FOR_CHART; this.SensorSignalCharts.Add(sscm); // Create timer but don't start yet. this._sensorsPollingTimer = new Timer(this.sensorsPollingTimerCallback, null, -1, this._pollingPeriod); } #endregion #region Properties /// <summary> /// Gets or sets collection of SensorSignalChartViewModel instances. /// </summary> public RadObservableCollection<SensorSignalChartViewModel> SensorSignalCharts { get { return this._sensorSignalCharts; } set { this.SetProperty(ref this._sensorSignalCharts, value); } } #endregion #region Methods /// <summary> /// Timer tick handler. /// </summary> /// <param name="state"></param> private void sensorsPollingTimerCallback(object state) { } #endregion #region IConfirmNavigationRequest Implementation void IConfirmNavigationRequest.ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback) { continuationCallback(true); } bool INavigationAware.IsNavigationTarget(NavigationContext navigationContext) { return true; } void INavigationAware.OnNavigatedFrom(NavigationContext navigationContext) { ; } void INavigationAware.OnNavigatedTo(NavigationContext navigationContext) { ; } #endregion}When I run my program I see no charts as you can see in EmptyCharts.PNG file attached. Why I see no charts? Please help me.
