2011-01-10 2 views
2

hey, J'efforce de supprimer quelques jours d'un élément d'une zone de liste de données lors de l'utilisation de la boîte à outils contectmenu. la méthode remove me demande d'insérer le nom d'un élément mais je ne pouvais pas le trouver.Supprimer un élément d'une boîte aux lettres Téléphone @windows 7

est la fonction ici pour ajouter l'élément

{ 
       listObjetDevis.Add(new itemListBoxSave { 
       devis = tbCreerDevis.Text }); 

       IsolatedStorageHelper.SaveObject("devis", listObjetDevis); 
      } 

thx pour l'aide

+0

quel objet voulez-vous supprimer? –

+0

Eh bien, j'ai une zone de texte qui est databind avec la liste. Lorsque l'utilisateur détient un élément de la liste, il affiche un menu contextuel dans lequel j'ai un autre bouton "supprimer". Je souhaite supprimer l'élément sélectionné de la liste et utiliser le menu contextuel. ty – user569574

Répondre

6

Voici un exemple simple de la façon de faire ce que vous devriez être en mesure de personnaliser vos propres projets/besoins.

  1. Créez une nouvelle application DataBound.

  2. Ajoutez une référence à la boîte à outils.

  3. Ajouter ce qui suit à la déclaration XAML de MainPage:

    xmlns: boîte à outils = "clr-namespace: Microsoft.Phone.Controls; assemblage = Microsoft.Phone.Controls.Toolkit"

  4. changement le ListBox.ItemTemplate à ce qui suit:

    <DataTemplate> 
        <StackPanel Margin="0,0,0,17" Width="432"> 
         <toolkit:ContextMenuService.ContextMenu> 
          <toolkit:ContextMenu> 
           <toolkit:MenuItem Header="delete" Click="ContextMenuDelete_Click"/> 
          </toolkit:ContextMenu> 
         </toolkit:ContextMenuService.ContextMenu> 
         <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
         <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
        </StackPanel> 
    </DataTemplate> 
    
  5. Ajoutez le gestionnaire d'événement suivant le code sous-jacent:

 
private void ContextMenuDeleteClick(object sender, RoutedEventArgs e) 
{ 
    App.ViewModel.Items.Remove((sender as MenuItem).DataContext as ItemViewModel); 
} 
+0

J'ai déjà essayé ceci mais Erreur Le type ou le nom d'espace de noms 'ItemViewModel' est introuvable (vous manque une directive using ou une référence d'assembly?) – user569574

+0

@ user569574 'ItemViewModel' est créé dans le dossier ViewModels par le modèle de projet. Voir un exemple de travail sur http://cid-cc22250598bf7f04.office.live.com/self.aspx/Public/SO-4645170.zip –

+0

Est-il possible de faire la même chose en utilisant les propriétés Command et CommandArgument? – Sly

0

Juste à l'évidence: si vous utilisez listObjetDevis.Add pour ajouter un élément, ne vous voulez utiliser listObjetDevis.RemoveAt(list.SelectedIndex) ou listObjetDevis.Remove(list.SelectedItem) pour supprimer l'élément?

+0

je l'ai essayé. ne fonctionne pas – user569574

+0

qu'en est-il ne fonctionne pas? L'interface utilisateur ne met pas à jour? utilisez-vous une ObservableCollection? Si vous n'utilisez pas de collection observable, la liste ne sera pas avertie que quelque chose a été supprimé. –

+0

oui j'utilise un observableCollection mais quand j'essaie votre solution, il me dit que 'selectedindex' ou 'selecteditem' n'est pas une définition valide etc – user569574

Questions connexes