清除ListView后,listviewselecteditem不更新UI

本文关键字:更新 UI listviewselecteditem ListView 清除 | 更新日期: 2023-09-27 18:09:47

我在Windows Store应用程序上使用Caliburn Micro。

我有一个ListView,它有一个SelectedItem,我第一次使用它的工作。但是,当我清除ListView并将其重新绑定到另一个Collection时,所选项目不再显示为选中的。

selectedItem属性被正确设置,因为我可以击中断点,并且一切工作都是预期的,只是视图没有被选定的项目更新,在我清除集合之后。

怎么了?

谢谢。编辑:

视图代码:

<ListView x:Name="DetailNotes"
          ItemsSource="{Binding DetailNotes}"
          SelectedItem="{Binding SelectedDetailNote}"                                  
          ItemTemplate="{StaticResource Notes600ItemTemplate}"
          IsItemClickEnabled="True"
          caliburn:Message.Attach="[Event ItemClick] = [DetailNoteSelected($eventArgs)]"/>

ViewModel代码:

(...)
private Note selectedDetailNote;
public Note SelectedDetailNote
{
    get { return this.selectedDetailNote; }
    set 
    { 
        this.selectedDetailNote = value; 
        this.NotifyOfPropertyChange(() => this.SelectedDetailNote); 
    }
}
(...)
public void DetailNoteSelected(ItemClickEventArgs eventArgs)
{
    Note n = (Note)eventArgs.ClickedItem;
    this.SelectedDetailNote = n;
}

清除ListView后,listviewselecteditem不更新UI

对不起!问题是我的显式绑定。我刚让calburn做他的工作,现在它成功了!解决方案如下:

视图代码:

<ListView x:Name="DetailNotes"
          ItemTemplate="{StaticResource Notes600ItemTemplate}"/>

ViewModel代码:

private Note selectedDetailNote;
public Note SelectedDetailNote
{
    get { return this.selectedDetailNote; }
    set 
    { 
        this.selectedDetailNote = value; 
        this.NotifyOfPropertyChange(() => this.SelectedDetailNote); 
    }
}

我知道很晚了,但是你的问题是绑定模式。你应该把它设置为two - way:

      SelectedItem="{Binding SelectedDetailNote, Mode=TwoWay}" 

在WinRT XAML中默认为单向