清除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;
}
对不起!问题是我的显式绑定。我刚让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中默认为单向