【问题标题】:Reset SelectedItem in LongListSelector after selection选择后重置 LongListSelector 中的 SelectedItem
【发布时间】:2013-09-15 01:14:56
【问题描述】:

我正在使用 Caliburn.Micro 和 LongListSelector。因为绑定 SelectedItem 是一个问题,所以我对 SelectionChanged 事件采取行动。问题是,返回列表后,当我再次单击同一项目时,它已经被选中。所以事件不会触发。我可以将 SelectedIndex 设置为 -1 或其他值,但在 Caliburn.Micro 中我无法访问 UI 控件。这就是 MVVM 的意义所在,不是吗? :)

这是我的 XAML

<LongListSelector x:Name="NewsItems" 
ItemsSource="{Binding NewsItems}" 
cal:Message.Attach="[Event SelectionChanged] = [NavigateToArticle($eventArgs)]" />

如何解决这个问题?无法从代码访问 LongListSelector 时如何重置 SelectedItem?

谢谢!

【问题讨论】:

    标签: xaml mvvm windows-phone-8 caliburn.micro longlistselector


    【解决方案1】:

    你必须把你的 LongListSelector SelctionMode="Multiple",

    您可以使用 Gesture Tap 事件获取它。

    【讨论】:

    • LongListSelector 没有 SelectionMode?​​span>
    【解决方案2】:

    不明白真正的问题,但 如果每次用户选择项目时都会触发选择更改事件,我认为您可以解决您的问题-

        private void productList_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            LongListSelector productList= (LongListSelector)sender;
            if (productList.SelectedItem == null)
                return;
    
            //Write your code here
    
            //For Tapping many times..
            productList.SelectedItem = null;
        }
    

    上面的代码会在每次选择相同的项目时触发选择更改事件。

    【讨论】:

    • 我正在使用 MVVM,所以我无法访问 productList,它不在我的 ViewModel 中。尤其是使用 Caliburn.Micro,即使您愿意,也无法做到。
    猜你喜欢
    • 2014-08-17
    • 2014-09-24
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多