2013-10-07 67 views
0

所以基本上就是這種情況。我有一個longlistselector顯示的數據(比如,汽車的列表):ContextMenu選擇舊項目

<phone:LongListSelector x:Name="list" ItemsSource="{Binding CarList}"> 
         <phone:LongListSelector.ItemTemplate> 
          <DataTemplate> 
           <StackPanel> 
             <toolkit:ContextMenuService.ContextMenu> 
             <toolkit:ContextMenu> 
              <toolkit:MenuItem Click="DeleteMenuItem_Click" Header="delete"/> 
             </toolkit:ContextMenu> 
            </toolkit:ContextMenuService.ContextMenu> 
            <TextBlock Text="{Binding SomeText}"> 
           </StackPanel> 
          </DataTemplate> 
         </phone:LongListSelector.ItemTemplate> 
</phone:LongListSelector> 

然後,我這是怎麼處理的缺失:

private void DeleteMenuItem_Click(object sender, RoutedEventArgs e) 
     { 
      Car data = (sender as MenuItem).DataContext as Car; 


       using (var db = new SQLiteConnection(App.DBpath)) 
       { 
        var existing = db.Query<Feed>("select * from Cars where Id = " + data.Id.ToString()).FirstOrDefault(); 

        if (existing != null) 
        { 

         db.RunInTransaction(() => 
         { 
          db.Delete(existing); 

         }); 
         App.ViewModel.loadCarData(); 
        } 
       } 
     } 

現在的問題是,在刪除一些之後,上下文菜單開始給舊選擇,並且不會更新,這使得var existing = db.Query<Feed>("select * from Cars where Id = " + data.Id.ToString()).FirstOrDefault();顯然返回null,因爲它已經從數據庫中刪除。任何想法如何解決這個問題?

回答

2

很可能this問題。

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

真棒!那樣做了!感謝shitloads!如果我有足夠的代表,我會贊成。 – Tup3x

+0

這對我有用 – adrian4aes