У меня есть listBox с более чем 1000 предметами.wp7 listbox selection
в XAML
<ListBox
//some code here
SelectionChanged="OnSelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<controls:MyCustomItem/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В сСт
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;
}
в MyCustomItem XAML
<UserControl
//Some code here
Style="{Binding Path=IsSelected, Converter = {StaticResource BoolToStyle}}">
<Border
</Border>
</UserControl>
Где IsSelected - один из собственности моего ViewModel. Конвертер возвращает один из двух стилей (первый, если выбран пункт, второй - если нет)
Всегда работайте, но я знаю - это очень ресурсоемкий и неправильное решение. Как это сделать правильно?
С точки зрения главной проблемой является то, что у вас есть более 1000 элементов в списке. Вам действительно нужно, чтобы много элементов в списке. Можете ли вы разбить это на несколько списков? – alykhalid
Нет, мне действительно нужно показать все элементы с функцией фильтра в одиночном ListBox. Я нашел решение и разместил его. – jimpanzer