【问题标题】:SelectedItem set to first item with CollectionViewSourceSelectedItem 使用 CollectionViewSource 设置为第一个项目
【发布时间】:2011-07-30 20:36:32
【问题描述】:

我有一个视图数据通过 mvvm light 绑定到我的 WP7 项目中的视图模型。 该视图包含一个具有以下设置的列表框:

<ListBox x:Name="StationList"
    ItemsSource="{Binding StationList}"
    SelectedItem="{Binding SelectedStation, Mode=TwoWay}"
    >

StationList 是一个 ObservableCollection。

现在,当视图被加载时,一切看起来都很棒!显示列表,但未选择任何项目!

但是当我将 XAML 更改为:

<ListBox x:Name="StationList"
            ItemsSource="{Binding Source={StaticResource StationListSorted}}"
            SelectedItem="{Binding SelectedStation, Mode=TwoWay}"
            >

StationListSorted 是 StationList 上的一个简单属性排序,作为 CollectionViewSource。 现在事情变得丑陋了!! 相同的视图在列表框中加载了相同的项目,但现在正确排序,但是第一个项目被选中并设置了 selectedItem 属性!!

如何在不自动选择我的第一个项目的情况下使用 CollectionViewSource 对 ListBox 进行排序?

【问题讨论】:

    标签: windows-phone-7 listbox collectionviewsource


    【解决方案1】:

    在您的列表框中,尝试设置IsSynchronizedWithCurrentItem 并查看哪个值(真或假)会产生所需的效果。

    【讨论】:

    • 但是为什么?!为什么这是答案?
    • 我不知道这是否是正确的答案,但似乎默认的 CollectionView 是在没有选择当前项目的情况下创建的,但在应用排序后,选择了当前项目。通过告诉数据绑定控件不与当前项同步,它们不会自动更新为 CollectionView 的当前项值。
    • 这是一个名称不佳的属性。它实际上意味着是否允许collectionview设置选定的项目/索引/等。否则,选择只会由控件或绑定源更改。
    猜你喜欢
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多