or
<UserControl.DataContext> <db:TimeChartViewModel /> </UserControl.DataContext> <UserControl.Resources> <Style x:Key="YAxisTitleStyle" TargetType="telerik:AxisTitle"> <Setter Property="Padding" Value="0, 0, 0, 0" /> <Setter Property="Margin" Value="0, 0, 0, 0" /> </Style> <Style x:Key="AdditionalYAxisTitleStyle" TargetType="telerik:AxisTitle"> <Setter Property="Padding" Value="0, 0, 0, 0" /> <Setter Property="Margin" Value="0, 3, 0, 0" /> </Style> </UserControl.Resources> <Grid> <Border telerikQuickStart:ThemeAwareBackgroundBehavior.IsEnabled="True"> <telerik:RadChart x:Name="RadTimeChart" ItemsSource="{Binding Data}"> <telerik:RadChart.DefaultView> <telerik:ChartDefaultView ChartLegendPosition="Bottom"> <telerik:ChartDefaultView.ChartArea> <telerik:ChartArea LegendName="ChartLegend1" NoDataString="Loading..." EnableAnimations="False" Padding="5, 10, 0, 5"> <telerik:ChartArea.AxisX> <telerik:AxisX DefaultLabelFormat="#VAL{H:mm:ss}" LabelRotationAngle="45" LabelStep="2" LayoutMode="Normal" Title="Time" AutoRange="False" MinValue="{Binding AxisXMinValue}" MaxValue="{Binding AxisXMaxValue}" Step="{Binding AxisXStep}" /> </telerik:ChartArea.AxisX> <telerik:ChartArea.AxisY> <telerik:AxisY DefaultLabelFormat="#VAL" Title="Power [W]" AutoRange="False" MinValue="0" MaxValue="3000" Step="500"> <telerik:AxisY.AxisStyles> <telerik:AxisStyles TitleStyle="{StaticResource YAxisTitleStyle}"/> </telerik:AxisY.AxisStyles> </telerik:AxisY> </telerik:ChartArea.AxisY> </telerik:ChartArea> </telerik:ChartDefaultView.ChartArea> <telerik:ChartDefaultView.ChartLegend> <telerik:ChartLegend x:Name="ChartLegend1" Padding="0, 10, 0, 5"/> </telerik:ChartDefaultView.ChartLegend> </telerik:ChartDefaultView> </telerik:RadChart.DefaultView> </telerik:RadChart> </Border> </Grid> #region Fields private const int queueCapacity = 30; private List<Queue<MeasurementData>> tcMeasurementData = new List<Queue<MeasurementData>>(queueCapacity); private DateTime nowTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second); private DispatcherTimer timer1; private List<Queue<MeasurementData>> _data; private double _axisXMinValue; private double _axisXMaxValue; private double _axisXStep; private LEAF.Devices.Common.TimeChartHistory device; #endregion #region Properties public LEAF.Devices.Common.TimeChartHistory Device { get { return this.device; } set { this.device = value; } } public List<Queue<MeasurementData>> Data { get { return this._data; } set { if (this._data != value) { this._data = value; this.OnPropertyChanged("Data"); } } } public double AxisXMinValue { get { return this._axisXMinValue; } set { if (this._axisXMinValue != value) { this._axisXMinValue = value; this.OnPropertyChanged("AxisXMinValue"); } } } public double AxisXMaxValue { get { return this._axisXMaxValue; } set { if (this._axisXMaxValue != value) { this._axisXMaxValue = value; this.OnPropertyChanged("AxisXMaxValue"); } } } public double AxisXStep { get { return this._axisXStep; } set { if (this._axisXStep != value) { this._axisXStep = value; this.OnPropertyChanged("AxisXStep"); } } } #endregion #region Constructor public TimeChartViewModel() { this.SetUpTimer(); } #endregion #region Methods public void StartTimer() { if (timer1 != null) timer1.Start(); } public void StopTimer() { if (timer1 != null) timer1.Stop(); } private void SetUpTimer() { timer1 = new DispatcherTimer(); timer1.Interval = TimeSpan.FromMilliseconds(500); timer1.Tick += OnTimerTick; } private void OnTimerTick(object sender, EventArgs e) { this.nowTime = this.nowTime.AddMilliseconds(500); this.UpdateData(this.nowTime); this.SetUpAxisXRange(this.nowTime); this.Data = null; this.Data = this.tcMeasurementData; } private void SetUpAxisXRange(DateTime now) { this.AxisXMinValue = now.AddSeconds(-14.5).ToOADate(); this.AxisXMaxValue = now.ToOADate(); this.AxisXStep = 1.0 / 24.0 / 3600.0 / 2.0; } private void UpdateData(DateTime now) { int i = 0; //This lines update data for each series... I'm pretty sure it is correct foreach (ChannelKeyValueConfiguration channelKeyValue in this.Device.Configuration.ChannelConfigurations) { IChannel channel = this.Device.Channels[channelKeyValue.Name]; Queue<MeasurementData> seriesData = this.tcMeasurementData[i]; if (seriesData.Count >= queueCapacity) seriesData.Dequeue(); MeasurementData lastMeasure = new MeasurementData(channel.Measure.Value, now); seriesData.Enqueue(lastMeasure); i++; } } public void AddMeasureDataSeries(Queue<MeasurementData> series) { this.tcMeasurementData.Add(series); } #endregion<telerik:RadGridView Grid.Row="1" IsReadOnly="True" ShowGroupPanel="False" RowIndicatorVisibility="Collapsed" IsFilteringAllowed="False" ItemsSource="{Binding Results}" AutoGenerateColumns="False"> <telerik:RadGridView.Style> </telerik:RadGridView.Style> <telerik:RadGridView.Columns> <telerik:GridViewToggleRowDetailsColumn /> <telerik:GridViewSelectColumn IsVisible="{Binding DataContext.IsMultiSelect, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:PatientSearchView}}}" /> <telerik:GridViewDataColumn DataMemberBinding="{Binding Id}" Width="*" />................ </telerik:RadGridView.Columns> <telerik:RadGridView.RowDetailsTemplate> <DataTemplate> <telerik:RadTabControl Height="400" HorizontalAlignment="Stretch" Margin="8,8,20,8" VerticalAlignment="Center"> <telerik:RadTabItem Header="Details" HorizontalContentAlignment="Stretch" HorizontalAlignment="Left"> <local:DetailsView DataContext="{Binding Details}" /> </telerik:RadTabItem>
............... </telerik:RadTabControl> </DataTemplate> </telerik:RadGridView.RowDetailsTemplate> </telerik:RadGridView><s:View ....> <Grid> <Grid.RowDefinitions> <RowDefinition Height="100"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Border BorderBrush="Black" BorderThickness=".5" Grid.Row="0" Height="90" Width="90" Margin="10,0,0,0" HorizontalAlignment="Left" > <Image Source="{Binding Details.Photo}" /> </Border> <telerik:RadDataForm AutoGenerateFields="True" CurrentItem="{Binding Details}" CommandButtonsVisibility="Commit,Cancel,Edit" Grid.Row="1" ScrollViewer.CanContentScroll="False"> <i:Interaction.Triggers> <i:EventTrigger EventName="EditEnded"> <i:InvokeCommandAction Command="{Binding Save}" /> </i:EventTrigger> </i:Interaction.Triggers> </telerik:RadDataForm> </Grid></s:View><telerik:RadGridView ItemsSource="{Binding}" x:Name="Listing" AutoGenerateColumns="False" SelectionMode="Single" IsReadOnly="True"> <telerik:RadGridView.Columns> <telerik:GridViewDataColumn Header="ID" MinWidth="25" DataMemberBinding="{Binding Path=ID}"></telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Lastname" MinWidth="150" DataMemberBinding="{Binding Path=surname}"></telerik:GridViewDataColumn> <telerik:GridViewDataColumn Header="Initials" MinWidth="75" DataMemberBinding="{Binding Path=initials}"></telerik:GridViewDataColumn> </telerik:RadGridView.Columns> </telerik:RadGridView>Listing.MouseDoubleClick += RadGridView1_MouseDoubleClick;public void RadGridView1_MouseDoubleClick(object sender, RoutedEventArgs e) { MessageBox.Show("ID" + ????); }