Hello,
I have two Control Template in listView (SelectionMode Multiple)
It's possible change control template on click ?
My problem is that it only changes the first one I select.
C#(Selector)
namespace
ProtoDesign.Selector
{
public
class
VenteBoxOptionSelector : DataTemplateSelector
{
public
DataTemplate TemplateDefault {
get
;
set
; }
public
DataTemplate TemplateClicked {
get
;
set
; }
protected
override
DataTemplate OnSelectTemplate(
object
item, BindableObject container)
{
if
(item !=
null
&& (Vente)item !=
null
)
return
((Vente)item).IsSelected ? TemplateClicked : TemplateDefault;
return
TemplateClicked;
}
}
}
XAML
<
telerikDataControls:RadListView
Grid.Column
=
"0"
BackgroundColor
=
"{StaticResource WhiteColor}"
x:Name
=
"rlv1"
SelectionChanged
=
"listView_SelectionChanged"
SelectionMode
=
"Multiple"
>
<
telerikDataControls:RadListView.ItemTemplateSelector
>
<
Selector:VenteBoxOptionSelector
>
<
Selector:VenteBoxOptionSelector.TemplateDefault
>
<
DataTemplate
>
<
telerikListView:ListViewTemplateCell
>
<
telerikListView:ListViewTemplateCell.View
>
<
StackLayout
Orientation
=
"Horizontal"
>
<
Label
Margin
=
"10"
Text
=
"{Binding TxtLabel}"
/>
<
Label
Margin
=
"10"
Text
=
"{Binding IsSelected,Mode=TwoWay}"
/>
<
Label
Margin
=
"10"
Text
=
"Texte séparé grace au StackLayout"
/>
</
StackLayout
>
</
telerikListView:ListViewTemplateCell.View
>
</
telerikListView:ListViewTemplateCell
>
</
DataTemplate
>
</
Selector:VenteBoxOptionSelector.TemplateDefault
>
<
Selector:VenteBoxOptionSelector.TemplateClicked
>
<
DataTemplate
>
<
telerikListView:ListViewTemplateCell
>
<
telerikListView:ListViewTemplateCell.View
>
<
StackLayout
Orientation
=
"Horizontal"
>
<
Label
Margin
=
"10"
Text
=
"{Binding TxtLabel}"
/>
<
Label
Margin
=
"10"
Text
=
"{Binding IsSelected,Mode=TwoWay}"
/>
<
Label
Margin
=
"10"
Text
=
"Essai en cliquant"
/>
</
StackLayout
>
</
telerikListView:ListViewTemplateCell.View
>
</
telerikListView:ListViewTemplateCell
>
</
DataTemplate
>
</
Selector:VenteBoxOptionSelector.TemplateClicked
>
</
Selector:VenteBoxOptionSelector
>
</
telerikDataControls:RadListView.ItemTemplateSelector
>
</
telerikDataControls:RadListView
>
XAML.CS
private
void
listView_SelectionChanged(
object
sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if
((sender
as
RadListView).SelectedItems !=
null
&& (sender
as
RadListView).SelectedItems.Count() > 0)
((sender
as
RadListView).SelectedItem
as
Vente).IsSelected =
true
;
}