or
public
class
GridItem : DynamicObject, INotifyPropertyChanged
{
public
GridItem(DateTime dateTime,
decimal
value)
{
_dateTime = dateTime;
_value = value;
}
//NOTE: The DateTime property is private forcing the GridView to use the DynamicObject implementation...
private
readonly
DateTime _dateTime;
private
DateTime DateTime
{
get
{
return
_dateTime; }
}
//NOTE: The Value property is private forcing the GridView to use the DynamicObject implementation...
private
decimal
_value;
private
decimal
Value
{
get
{
return
_value; }
set
{
_value = value;
OnPropertyChanged(
"Value"
);
}
}
public
override
bool
TryGetMember(GetMemberBinder binder,
out
object
result)
{
result =
null
;
switch
(binder.Name)
{
case
"DateTime"
:
result = DateTime;
break
;
case
"Value"
:
result = Value;
break
;
}
return
true
;
}
public
override
bool
TrySetMember(SetMemberBinder binder,
object
value)
{
switch
(binder.Name)
{
case
"Value"
:
decimal
result;
if
(
decimal
.TryParse(value.ToString(),
out
result))
{
Value = result;
}
break
;
}
return
true
;
}
private
static
readonly
IEnumerable<
string
> _members =
new
List<
string
>() {
"DateTime"
,
"Value"
};
public
override
IEnumerable<
string
> GetDynamicMemberNames()
{
return
_members;
}
public
event
PropertyChangedEventHandler PropertyChanged;
private
void
OnPropertyChanged(
string
propertyName)
{
if
(PropertyChanged ==
null
)
return
;
PropertyChanged(
this
,
new
PropertyChangedEventArgs(propertyName));
}
}
this
.GridView.ItemsSource =
new
List<GridItem>()
{
new
GridItem(DateTime.Parse(
"1/1/2009"
), 10.9m),
new
GridItem(DateTime.Parse(
"3/31/2010"
), 11.4m),
new
GridItem(DateTime.Parse(
"5/1/2011"
), 12.5m),
};
<
Telerik:RadGridView
x:Name
=
"GridView"
AutoGenerateColumns
=
"False"
>
<
Telerik:RadGridView.Columns
>
<
Telerik:GridViewDataColumn
UniqueName
=
"DateTime"
Header
=
"Date/Time"
DataMemberBinding
=
"{Binding DateTime}"
IsReadOnly
=
"True"
DataType
=
"{x:Type System:DateTime}"
IsFilterable
=
"True"
/>
<
Telerik:GridViewDataColumn
UniqueName
=
"Value"
Header
=
"Value"
DataMemberBinding
=
"{Binding Value}"
DataType
=
"{x:Type System:Decimal}"
IsFilterable
=
"True"
/>
</
Telerik:RadGridView.Columns
>
</
Telerik:RadGridView
>
BindingExpression path error: 'Name' property not found on 'object' ''Char' (HashCode=5177423)'. BindingExpression:Path=Name; DataItem='Char'