0

我在 Windows 应用商店应用程序上使用 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)]"/>

视图模型代码:

(...)
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;
}
4

2 回答 2

0

对不起!问题是我的显式绑定。我刚刚离开 Caliburn 做他的工作,现在它可以工作了!解决方案如下:

查看代码:

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

视图模型代码:

private Note selectedDetailNote;

public Note SelectedDetailNote
{
    get { return this.selectedDetailNote; }
    set 
    { 
        this.selectedDetailNote = value; 
        this.NotifyOfPropertyChange(() => this.SelectedDetailNote); 
    }
}
于 2013-04-19T08:38:38.920 回答
-1

我知道已经晚了,但你的问题是绑定模式。您应该将其设置为 TwoWay:

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

在 WinRT XAML 中,默认值为 OneWay。

于 2013-06-12T09:36:54.793 回答