我在Windows应用商店应用中使用Caliburn Micro。
我有一个ListView,它有一个在我第一次使用时工作的SelectedItem。但是,当我清除ListView并将其重新绑定到另一个Collection时,所选项目不再显示为已选中。
正确设置了selectedItem属性,因为我可以点击断点,并且一切正常,只有在我清除集合后,才会使用所选项目更新View。
可能出现什么问题?
感谢。
编辑:
查看代码:
<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;
}
答案 0 :(得分:0)
抱歉!问题是我明确的约束力。我刚离开Caliburn做他的工作,现在它有效! 解决方案如下:
查看代码:
<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);
}
}
答案 1 :(得分:-1)
我知道现在已经很晚了,但你的问题是绑定模式。你应该把它设置为TwoWay:
SelectedItem="{Binding SelectedDetailNote, Mode=TwoWay}"
在WinRT中,XAML默认为OneWay。