<telerik:RadGridView AutoGenerateColumns="False" NewRowStyle="{StaticResource NewRowStyle}" RowStyle="{StaticResource RowStyle}" Foreground="White" HorizontalGridLinesBrush="White" Margin="10,10,210,22" Name="groupGrid" SelectionMode="Single" SelectionUnit="FullRow" VerticalGridLinesBrush="White" SelectionChanged="groupGrid_SelectionChanged" CellEditEnded="groupGrid_CellEditEnding" RowIndicatorVisibility="Collapsed" ShowGroupPanel="False" ShowInsertRow="True" RowEditEnded="groupGrid_RowEditEnded">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header="Task Name: " DataMemberBinding="{Binding Name}" />
<telerik:GridViewDataColumn Header="Description: " DataMemberBinding="{Binding Description}" />
<telerik:GridViewDataColumn Header="Solution: " DataMemberBinding="{Binding Solution}" />
<my:TimePickerColumn DataMemberBinding="{Binding StartTime}" Header="Start Time" TimeInterval="0:30:0"/>
<telerik:GridViewDataColumn Header="End Time: " DataMemberBinding="{Binding EndTime}" />
<telerik:GridViewDataColumn Header="Elapsed:" UniqueName="Elapsed" DataMemberBinding="{Binding ElapsedTime}" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
public class TimePickerColumn : GridViewBoundColumnBase { public TimeSpan TimeInterval { get { return (TimeSpan)GetValue(TimeIntervalProperty); } set { SetValue(TimeIntervalProperty, value); } } public static readonly DependencyProperty TimeIntervalProperty = DependencyProperty.Register("TimeInterval", typeof(TimeSpan), typeof(TimePickerColumn), new PropertyMetadata(TimeSpan.FromHours(1d))); public override FrameworkElement CreateCellEditElement(GridViewCell cell, object dataItem) { this.BindingTarget = RadTimePicker.SelectedValueProperty; RadTimePicker picker = new RadTimePicker(); picker.IsTooltipEnabled = false; picker.TimeInterval = this.TimeInterval; picker.SetBinding(this.BindingTarget, this.CreateValueBinding()); return picker; } public override object GetNewValueFromEditor(object editor) { RadTimePicker picker = editor as RadTimePicker; if (picker != null) { picker.DateTimeText = picker.SelectedTime.Value.ToString(); } return base.GetNewValueFromEditor(editor); } private Binding CreateValueBinding() { Binding valueBinding = new Binding(); valueBinding.Mode = BindingMode.TwoWay; valueBinding.NotifyOnValidationError = true; valueBinding.ValidatesOnExceptions = true; valueBinding.UpdateSourceTrigger = UpdateSourceTrigger.Explicit; valueBinding.Path = new PropertyPath(this.DataMemberBinding.Path.Path); return valueBinding; } }