wp7 listbox selection

192 views Asked by At

I have a listBox with 1000+ items.

in xaml

<ListBox 
//some code here
SelectionChanged="OnSelectionChanged">
    <ListBox.ItemTemplate>
         <DataTemplate>
             <controls:MyCustomItem/>
         </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

In cs

 private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var item = lb.SelectedItem as MyCustomItem;
        var vm = DataContext as ViewModel;
        if (vm == null) return;
        foreach (var it in vm.ItemsForBinding)
        {
            it.IsSelected = false;
        }
        item .IsSelected = true;
    }

in MyCustomItem xaml

<UserControl
//Some code here
Style="{Binding Path=IsSelected, Converter = {StaticResource BoolToStyle}}">
    <Border 
    </Border>
</UserControl>

Where IsSelected - one of property of my ViewModel. Converter return one of two style (first if item selected, second - if no)

Always work, but I know - it's very resource-intensive, and the wrong decision. How to do it right?

1

There are 1 answers

0
Andrei Zhukouski On BEST ANSWER

This post help me! Just override default ItemContainerStyle for my ListBox.

I removed:

metod OnSelectionChanged, UserControl MyCustomItem, converter for styles and

<ListBox.ItemTemplate>
     <DataTemplate>
         <controls:MyCustomItem/>
     </DataTemplate>
</ListBox.ItemTemplate>

from xaml.