or
<Style TargetType="telerik:RadGridView" x:Key="ManagementWithSummaryStyleLocal"> <Setter Property="RowIndicatorVisibility" Value="Visible" /> <Setter Property="IsSynchronizedWithCurrentItem" Value="True" /> <Setter Property="EditTriggers" Value="CellClick" /> <Setter Property="GroupRenderMode" Value="Flat" /> <Setter Property="GridLinesVisibility" Value="Both" /> <Setter Property="CanUserFreezeColumns" Value="False" /> <Setter Property="AutoGenerateColumns" Value="False" /> <Setter Property="ShowGroupPanel" Value="False" /> <Setter Property="CanUserReorderColumns" Value="False" /> <Setter Property="ValidatesOnDataErrors" Value="Default" /> <Setter Property="ActionOnLostFocus" Value="CommitEdit" /> <Setter Property="ShowColumnFooters" Value="True" /> <Setter Property="FooterRowStyle" Value="{StaticResource ManagementGridViewFooterRowStyleLocal}" /> </Style> <Style x:Key="ManagementGridViewFooterRowStyleLocal" TargetType="{x:Type telerik:GridViewFooterRow}"> <Setter Property="Template" Value="{StaticResource GridViewFooterRowTemplateLocal}" /> <Setter Property="MinHeight" Value="24" /> <Setter Property="BorderThickness" Value="0,0,0,1" /> </Style> <ControlTemplate x:Key="GridViewFooterRowTemplateLocal" TargetType="telerik:GridViewFooterRow"> <Border MinHeight="{TemplateBinding MinHeight}" Margin="{TemplateBinding Margin}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"> <telerik:SelectiveScrollingGrid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <StackPanel Orientation="Horizontal" Margin="5,5,2,2"> <TextBlock Text="ITEMS: " /> <TextBlock Text="{Binding Items.ItemCount, RelativeSource={RelativeSource AncestorType=telerik:RadGridView}, Mode=OneWay}" /> </StackPanel> </telerik:SelectiveScrollingGrid> </Border> </ControlTemplate>
<telerik:RadGridView Style="{StaticResource ManagementWithSummaryStyleLocal}" />
<
DataGrid
>
...
<
DataGrid.Columns
>
...
<
DataGridTemplateColumn
Header
=
"ETA"
>
<
DataGridTemplateColumn.CellTemplate
>
<
DataTemplate
>
<
telerik:RadTimePicker
InputMode
=
"DateTimePicker"
SelectedValue
=
"{Binding ETA}"
/>
</
DataTemplate
>
</
DataGridTemplateColumn.CellTemplate
>
</
DataGridTemplateColumn
>
...
</
DataGrid.Columns
>
...
</
DataGrid
>
DataForm_MoveCurrentToFirst | First |
DataForm_MoveCurrentToPrevious | Previous |
DataForm_MoveCurrentToNext | Next |
DataForm_MoveCurrentToLast | Last |
DataForm_AddNew | Add |
DataForm_BeginEdit | Edit |
DataForm_Delete | Delete |
<
telerik:PropertyDefinition
Binding
=
"{Binding DateTo}"
OrderIndex
=
"4"
GroupName
=
"Filters"
DisplayName
=
"Date To"
/>
I have a enum type, and want to display it in column with image, and filter it with description. I directly convert enum type to image path, and can display it in column, but can not filter it. I convert enum type to a class with properties, such as image path, description, but can not binding it correctly.
<Window x:Class=
"TrafficLight.MainWindow"
xmlns:telerik=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local=
"clr-namespace:TrafficLight"
xmlns:d=
"http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc=
"http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable=
"d"
Title=
"MainWindow"
Height=
"350"
Width=
"600"
>
<Window.Resources>
<local:LightConvert x:Key=
"Converter"
/>
<local:LightStringConvert x:Key=
"StringConverter"
/>
<local:LightWrpper x:Key=
"LightWrpper"
/>
<DataTemplate x:Key=
"ImageCellTemplate"
>
<Image Height=
"16"
Width=
"16"
HorizontalAlignment=
"Center"
Source=
"{Binding SouthNorthLight, Converter={StaticResource ResourceKey=Converter}}"
/>
</DataTemplate>
<DataTemplate x:Key=
"LightListTemplate"
>
<StackPanel Orientation=
"Horizontal"
>
<Image HorizontalAlignment=
"Center"
VerticalAlignment=
"Center"
Height=
"16"
Width=
"16"
Source=
"{Binding ImagePath}"
/>
<TextBlock Text=
"{Binding Description}"
HorizontalAlignment=
"Left"
VerticalAlignment=
"Center"
Padding=
"5,0,2,0"
/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Window.DataContext>
<local:LightViewModel/>
</Window.DataContext>
<Grid>
<telerik:RadGridView AutoGenerateColumns=
"False"
ItemsSource=
"{Binding LightCollection}"
>
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Header=
"Location"
IsReadOnly=
"True"
DataMemberBinding=
"{Binding Location}"
/>
<telerik:GridViewImageColumn Header=
"South North Light"
IsReadOnly=
"True"
ImageHeight=
"16"
ImageWidth=
"16"
ImageStretch=
"Uniform"
IsFilterable=
"False"
DataMemberBinding=
"{Binding SouthNorthLight, Converter={StaticResource StringConverter}}"
/>
<telerik:GridViewComboBoxColumn Header=
"South North Light"
IsFilterable=
"False"
FilterMemberPath=
"Description"
DataMemberBinding=
"{Binding SouthNorthLight, Converter={StaticResource Converter}}"
ItemsSource=
"{Binding Path=LightWrpperList, Source={StaticResource LightWrpper}}"
ItemTemplate=
"{StaticResource LightListTemplate}"
/>
<telerik:GridViewImageColumn Header=
"East West Light"
IsReadOnly=
"True"
ImageHeight=
"24"
ImageWidth=
"24"
ImageStretch=
"Uniform"
FilterMemberPath=
"Description"
SortMemberPath=
"Description"
DataMemberBinding=
"{Binding EastWestLight, Converter={StaticResource Converter}}"
>
<telerik:GridViewImageColumn.CellTemplate>
<DataTemplate>
<Image HorizontalAlignment=
"Center"
Source=
"{Binding Path=ImagePath}"
/>
</DataTemplate>
</telerik:GridViewImageColumn.CellTemplate>
</telerik:GridViewImageColumn>
<telerik:GridViewComboBoxColumn Header=
"South North Light"
IsFilterable=
"True"
FilterMemberPath=
"Description"
DataMemberBinding=
"{Binding SouthNorthLight, Converter={StaticResource Converter}}"
CellTemplate=
"{StaticResource ImageCellTemplate}"
ItemsSource=
"{Binding Path=LightWrpperList, Source={StaticResource LightWrpper}}"
ItemTemplate=
"{StaticResource LightListTemplate}"
/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</Grid>
</Window>
using
System;
using
System.Collections.Generic;
using
System.Collections.ObjectModel;
using
System.Globalization;
using
System.Windows.Data;
namespace
TrafficLight
{
public
enum
Light
{
Green,
Red,
Yello,
}
public
class
Lights
{
public
Light SouthNorthLight {
get
;
set
; }
public
Light EastWestLight {
get
;
set
; }
public
string
Location {
get
;
set
; }
}
public
class
LightViewModel
{
public
ObservableCollection<Lights> LightCollection {
get
;
private
set
; }
public
LightViewModel()
{
LightCollection =
new
ObservableCollection<Lights>();
LightCollection.Add(
new
Lights() { SouthNorthLight = Light.Green, EastWestLight = Light.Red, Location =
"The 5th St"
});
LightCollection.Add(
new
Lights() { SouthNorthLight = Light.Red, EastWestLight = Light.Green, Location =
"St John Rd"
});
LightCollection.Add(
new
Lights() { SouthNorthLight = Light.Yello, EastWestLight = Light.Red, Location =
"Sents Rd"
});
}
}
public
class
LightWrpper
{
public
static
List<LightWrpper> LightWrpperList {
get
;
private
set
; }
public
static
LightWrpper Red {
get
;
private
set
; }
public
static
LightWrpper Green {
get
;
private
set
; }
public
static
LightWrpper Yello {
get
;
private
set
; }
static
LightWrpper()
{
Red =
new
LightWrpper() { Light = Light.Red, ImagePath =
"Images/Red.png"
, Description =
"Red Light On"
};
Green =
new
LightWrpper() { Light = Light.Green, ImagePath =
"Images/Green.png"
, Description =
"Green Light On"
};
Yello =
new
LightWrpper() { Light = Light.Yello, ImagePath =
"Images/Yello.png"
, Description =
"Yello Light On"
};
LightWrpperList =
new
List<LightWrpper>();
LightWrpperList.Add(Red);
LightWrpperList.Add(Green);
LightWrpperList.Add(Yello);
}
public
Light Light {
get
;
private
set
; }
public
string
ImagePath {
get
;
private
set
; }
public
string
Description {
get
;
private
set
; }
}
[ValueConversion(
typeof
(Light),
typeof
(LightWrpper))]
public
class
LightConvert : IValueConverter
{
public
object
Convert(
object
value, Type targetType,
object
parameter, CultureInfo culture)
{
if
(value ==
null
)
{
return
LightWrpper.Yello;
}
var light = (Light)value;
switch
(light)
{
case
Light.Green:
return
LightWrpper.Green;
case
Light.Red:
return
LightWrpper.Red;
default
:
return
LightWrpper.Yello;
}
}
public
object
ConvertBack(
object
value, Type targetType,
object
parameter, CultureInfo culture)
{
if
(value ==
null
)
{
return
Light.Yello;
}
var light = (LightWrpper)value;
switch
(light.Light)
{
case
Light.Green:
return
Light.Green;
case
Light.Red:
return
Light.Red;
default
:
return
Light.Yello;
}
}
}
[ValueConversion(
typeof
(Light),
typeof
(
string
))]
public
class
LightStringConvert : IValueConverter
{
public
object
Convert(
object
value, Type targetType,
object
parameter, CultureInfo culture)
{
var light = (Light)value;
switch
(light)
{
case
Light.Green:
return
"Images/Green.png"
;
case
Light.Red:
return
"Images/Red.png"
;
default
:
return
"Images/Yello.png"
;
}
}
public
object
ConvertBack(
object
value, Type targetType,
object
parameter, CultureInfo culture)
{
throw
new
NotImplementedException();
}
}
}