<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;
}
}