2013-04-18 38 views
0

我在Windows應用商店使用Caliburn Micro。ListView SelectedItem在ListView被清除後沒有更新UI

我有一個ListView,它有一個SelectedItem,第一次使用它。但是,當我清除ListView並將其重新綁定到另一個集合時,選定的項目不再顯示爲選中狀態。

selectedItem屬性設置正確,因爲我可以擊中斷點,並且所有的工作都已經預料到,只是在清除集合之後View並沒有被選中的項目更新。

什麼可能是錯的?

謝謝。

編輯:

查看代碼:

<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; 
} 
+1

你能發表一些代碼嗎? – Xyroid

+0

是的,我可以。已經更新了這個問題。 – Silva

+0

對不起。我認爲這個問題與我正在清理收集有關,但問題只是我使用了一些明確的綁定。我刪除後,一切正常。 – Silva

回答

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); 
    } 
} 
-1

我知道這是晚了,但你的問題是有約束力的模式。您應該將它設置爲TwoWay:

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

在WinRT XAML中默認爲OneWay。