2014-01-29 2 views
2

Я думал, что мой вопрос будет очень простым, но я до сих пор не нашел решения.
У меня есть LongListSelector и ContextMenu в каждом пункте. Когда я долгое время покажу элемент LongListSelector, появится ContextMenu с опцией удаления. Я хочу удалить выбранный элемент LongListSelector. Мой код:WP8: LongListSelector с ContextMenu для удаления элемента

XAML:

<phone:PhoneApplicationPage 
.... 
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
> 

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <Grid x:Name="ContentPanel" Grid.Row="0" Margin="12,0,12,0"> 

     <phone:LongListSelector 
      Name="TestList" 
      > 
      <phone:LongListSelector.ItemTemplate 
       > 
       <DataTemplate> 
        <TextBlock Text="{Binding}"> 
        <toolkit:ContextMenuService.ContextMenu> 
         <toolkit:ContextMenu Name="ContextMenu" > 
          <toolkit:MenuItem 
           Name="Delete" 
           Header="Delete" 
           Click="Delete_Click"/> 
         </toolkit:ContextMenu> 
        </toolkit:ContextMenuService.ContextMenu> 
        </TextBlock> 
       </DataTemplate> 
       </phone:LongListSelector.ItemTemplate> 
     </phone:LongListSelector> 

    </Grid> 

</Grid> 

C#:

namespace TestContextMenu 
{ 
    public partial class MainPage : PhoneApplicationPage 
    { 
     public List<string> Items = new List<string> 
     { 
      "Item1", 
      "Item2", 
      "Item3", 
      "Item4", 
      "Item5", 
     }; 

     public MainPage() 
     { 
      InitializeComponent(); 
      TestList.ItemsSource = Items; 
     } 


     private void Delete_Click(object sender, RoutedEventArgs e) 
     { 
      Items.RemoveAt(0); 
      //var item = (sender as MenuItem).DataContext; 
      //TestList.ItemsSource.Remove(item); 
     } 
    } 
} 

Когда я нажмите кнопку Удалить, элемент в LongListSelector не могут быть удалены визуально, хотя данные есть были удалены.

Я прочитал this, но решение не работает для моей ситуации. Кто-нибудь знает, что не так в моем кодовом PLS, дайте мне знать, спасибо!

ответ

6

Попробуйте заменить List<string> на ObservableCollection<string>. Поскольку ObservableCollection предназначен для реагирования на изменения в коллекции.

+0

Благодарим @ crea7or за ваш быстрый ответ. Он отлично работает! – Vigor