wp7列表框选择

时间:2013-04-03 06:29:32

标签: windows-phone-7 windows-phone-8 windows-phone windows-phone-7.1.1

我有一个包含1000多个项目的listBox。

in xaml

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

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

在MyCustomItem xaml

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

IsSelected - 我的ViewModel的属性之一。转换器返回两种样式中的一种(如果选择了项目,则返回第一个,如果没有则返回第二个)

始终工作,但我知道 - 这是非常耗费资源的,也是错误的决定。 怎么做对了?

1 个答案:

答案 0 :(得分:0)

post帮助我! 只需覆盖我的ListBox的默认ItemContainerStyle。

我删除了:

metod OnSelectionChanged,UserControl MyCustomItem,样式转换器和

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

来自xaml。