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