2013-02-19 21 views
3

我有這個LongListSelector在一個頁面:LongListSelector和文本菜單返回錯誤的項目

<Controls:LongListSelector Height="Auto" x:Name="historylist" HorizontalContentAlignment="Stretch" 
            Background="Black" SelectionChanged="DidPressSelectItem"> 
      <Controls:LongListSelector.ItemTemplate> 
       <DataTemplate> 
        <local:SearchTemplateSelector Content="{Binding}" HorizontalContentAlignment="Stretch"> 
         <toolkit:ContextMenuService.ContextMenu> 
          <toolkit:ContextMenu Opened="ContextMenu_Opened"> 
           <toolkit:MenuItem Header="Edit" Click="EditVideo"/> 
          </toolkit:ContextMenu> 
         </toolkit:ContextMenuService.ContextMenu> 
. 
. 
. 
. 
        </local:SearchTemplateSelector> 
       </DataTemplate> 


      </Controls:LongListSelector.ItemTemplate> 

這是EditVideo

private void EditVideo(object sender, RoutedEventArgs e) 
    { 
     VideoItem selectedVideo = (sender as MenuItem).DataContext as VideoItem; 
     if (video == null) { return; } 

     //Do Stuff 

     this.RelodeTableData(); 
    } 

而且RelodeTableData

private void RelodeTableData() 
    { 
     System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => 
     { 
      searchResults.Clear(); 
      for (int i = 0; i < historyRep.historyArray.Count; i++) 
      { 
       VideoItem item = historyRep.historyArray[i]; 
       searchResults.Add(item); 
      } 
     }); 
    } 

問題是,當用戶編輯一個項目並嘗試編輯另一個項目後,他得到他編輯的最後一個項目selectedVideo

我編輯它後使用ReloadTableData刷新列表數據。

+0

「searchResults」集合是「ObservableCollection」的一個實例嗎? – Haspemulator 2013-02-19 10:50:48

+0

是:ObservableCollection searchResults = new ObservableCollection (); – MTA 2013-02-19 10:56:09

+0

所以你的意思是爲用戶顯示正確的視頻項目,但錯誤的DataContext出現在事件處理程序內? – Haspemulator 2013-02-19 12:49:09

回答

11

好了之後,大量的搜索如何解決這個問題。我發現如果我添加Unload方法到ContextMenu,這是清除DataContext。

private void ContextMenu_Unload(object sender, RoutedEventArgs e) 
    { 
     ContextMenu conmen = (sender as ContextMenu); 
     conmen.ClearValue(FrameworkElement.DataContextProperty); 
    } 
+1

我有同樣的問題,這解決了它! – epaps 2013-05-27 16:17:14

+0

非常感謝! – 2013-10-24 14:45:23