C# 即使在mvvm windows phone应用程序中返回后,列表框也会突出显示selecteditem

C# 即使在mvvm windows phone应用程序中返回后,列表框也会突出显示selecteditem,c#,windows-phone-7,windows-phone-8,listbox,windows-phone,C#,Windows Phone 7,Windows Phone 8,Listbox,Windows Phone,我的应用程序中有一个列表框,其中填充了一个可观察的集合,它在列表框中正确地显示了项目。此列表框位于全景项目页面中。当用户点击任何项目时,它将导航到新页面 但是,当用户返回到显示listbox的上一页后,相同的项目已被选中,如果用户再次点击该项目,则不会发生任何事情。是否有方法解决此问题,以便在从其页面返回后默认情况下不再选中相同的项目 视图如下所示: <ListBox x:Name="lstSavedSource" ItemsSource="{Binding SavedDataSource

我的应用程序中有一个列表框,其中填充了一个可观察的集合,它在列表框中正确地显示了项目。此列表框位于全景项目页面中。当用户点击任何项目时,它将导航到新页面

但是,当用户返回到显示listbox的上一页后,相同的项目已被选中,如果用户再次点击该项目,则不会发生任何事情。是否有方法解决此问题,以便在从其页面返回后默认情况下不再选中相同的项目

视图如下所示:

<ListBox x:Name="lstSavedSource" ItemsSource="{Binding SavedDataSource}"
         SelectedItem="{Binding SelectedSource,Mode=TwoWay}"
         Grid.Row="1" Margin="0,10,0,0">
    <ListBox.ItemTemplate >
        <DataTemplate>                                  
            <TextBlock Foreground="White" FontSize="20"  Text="{Binding SavedSourceName}"  TextWrapping="Wrap" ></TextBlock>
            <TextBlock Foreground="White" FontSize="20"  Text="{Binding SavedSourceid}"  TextWrapping="Wrap"></TextBlock>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

并且ViewModel具有以下集合:

private ObservableCollection<DataSource> _SavedDataSource = new ObservableCollection<DataSource>();

public ObservableCollection<DataSource> SavedDataSource
{
    get
    {
        ObservableCollection<DataSource> savedDataSource = new ObservableCollection<DataSource>();
        savedDataSource = DataSource.GetSaved();              
        return savedDataSource;
    }
    set
    {
        this._SavedDataSource = value;
        RaisePropertyChanged("SavedDataSource");
    }
}
private ObservableCollection\u SavedDataSource=new ObservableCollection();
公共ObservableCollection SavedDataSource
{
得到
{
ObservableCollection savedDataSource=新的ObservableCollection();
savedDataSource=DataSource.GetSaved();
返回savedDataSource;
}
设置
{
这是.\u SavedDataSource=value;
RaisePropertyChanged(“SavedDataSource”);
}
}

在导航到下一页之前,请将SelectedIndex属性设置为-1

listbx.SelectedIndex = -1;

你能说得更具体些吗,返回listbox页面时会发生什么情况?我不希望在从所选项目的页面返回后默认选中它。你的意思是我必须在viewmodel中定义一个int属性,并将其绑定到同一listbox selectedindex事件,并将其索引设置为-1,用户每次点击任何项目?我已进行了更改,这次该项没有突出显示,但点击同一项没有任何作用。@krrishna您如何处理“点击”事件?我在设置selectedindex=-1的同一位置将selecteditem设置为null,问题得到了解决。@krrishna很高兴听到这个消息。基本思想是一样的,您只需要根据您在实现中处理事情的方式对其进行调整。