使用MVVM Caliburn Micro选择后,在LongListSelector中重置SelectedItem

时间:2014-02-28 14:58:00

标签: windows-phone-8 caliburn.micro

我正在使用Caliburn.Micro和LongListSelector。因为绑定 SelectedItem是一个问题,我正在创建一个自定义类

public static readonly DependencyProperty SelectedItemProperty = DependencyProperty.Register(“SelectedItem”,typeof(object),typeof(LongListSelector),         new PropertyMetadata(null,OnSelectedItemChanged));

问题是,在返回列表后,当我再次点击同一个项目时,它已经被选中而不起作用。

我使用了TAP事件而不是SelectionChanged并且它可以工作,但是在我的longlistselector中,如果我点击组,我会使用分组和点击事件点击。

帮助我!

2 个答案:

答案 0 :(得分:1)

我解决了!!我的问题出在DependecyProperty声明中

private static void OnSelectedItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var selector = (LongListSelector)d;
        selector.SelectedItem = e.NewValue;
    }

不工作

WORKS此声明

 private static void OnSelectedItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var selector = (LongListSelector)d;
        selector.SetSelectedItem(e);
    }

    private void SetSelectedItem(DependencyPropertyChangedEventArgs e)
    {
        base.SelectedItem = e.NewValue;
    }

答案 1 :(得分:0)

在ViewModel的SelectedItem=null中设置OnActivate应该可以解决问题。