0

異なるXAMLのボタンをクリックしたときにObservableCollectionから選択したすべての項目を削除しようとしていますが、システムに実装する方法がわかりません。ObservableCollectionから選択したすべての項目を削除する方法

Basket.xaml

<ListBox x:Name="listBox" HorizontalAlignment="Left" Height="270" Margin="10,170,0,0" VerticalAlignment="Top" Width="125" IsSynchronizedWithCurrentItem="False" SelectionChanged="listBox_SelectionChanged"> 
     <ListView Name ="myListView" ItemsSource="{Binding PassedData}" HorizontalAlignment="Left" VerticalAlignment="Center"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="auto"/> 
          <ColumnDefinition Width="auto"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="auto"/> 
         </Grid.RowDefinitions> 
         <TextBox Grid.Column="0" Text="{Binding Name}" IsReadOnly="True" FontSize="15" /> 
         <TextBox x:Name="quanttextBox" HorizontalAlignment="Left" Height="25" Margin="155,175,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="95" TextChanged="quanttextBox_TextChanged"/> 
         <!--<TextBox Grid.Column="1" Text="{Binding Value}" /> !--> 
        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

    </ListBox> 
バスケット
でのObservableCollection

private static ObservableCollection<Menu.PassedData> passedData = new ObservableCollection<Menu.PassedData>(); 
    public ObservableCollection<Menu.PassedData> PassedData 
    { 

     get { return passedData; } 
     //get{ passedData = value; } 

    bool IsSelected = true; 
    } 

リストビューが含まれています。以下は

RemoveAll for ObservableCollections?は私のコードです - 私は私を導くために、この例を使用しています

Confirm.xamlはページwですHICHすべての項目

public static class ObservableCollectionExtensions 
{ 
    public static void RemoveAll<T>(this ObservableCollection<T> collection, 
                 Func<T, bool> condition) 
    { 
     for (int i = collection.Count - 1; i >= 0; i--) 
     { 
      if (condition(collection[i])) 
      { 
       collection.RemoveAt(i); 
      } 
     } 
    } 
} 

ボタン自体

 private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
    { 
     Menu.PassedData.RemoveAll(data => data.IsSelected == true); 

     Frame.Navigate(typeof(MainPage)); 

    } 

Menu.PassedData

 public event SelectionChangedEventHandler SelectionChanged; 
    public class PassedData 
    { 
     public string Name { get; set; } 
     public double Value { get; set;} 

     bool IsSelected = true; 

     internal static void RemoveAll(Func<object, bool> p) 
     { 
      throw new NotImplementedException(); 
     } 
    } 

エラー を削除するには、ボタンをcotains

+0

SelectionChangedEventを使用して選択されたときに trueにそのプロパティを作りますか? – DRKblade

+0

Menu.PassedDataクラスにboolプロパティを設定しておくと、そのプロパティを選択して保存する必要があります。それは簡単です。あなたは、イベントハンドラの項目をループすることができます、選択したプロパティをチェックしてください。それが本当であればそれを削除してください – Archana

+0

どのようにアイテムを選択していますか? – Archana

答えて

0

のようなものを書く必要があります。リストビューの項目がそのエラーoccourをした

private void SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      foreach (var item in e.AddedItems) 
      { 

       (item as Menu.Passed).Selected=true 
      } 
     } 
private void HyperlinkButton_Click(object sender, RoutedEventArgs e) 
     { 

     PassedData.RemoveAll(data => data.IsSelected == true); 

     } 





     public class PassedData 
     { 
      public string Name { get; set; } 
      public double Value { get; set;} 

      public bool IsSelected{get;set;} 


     } 
+0

答えをいただきありがとうございます.Basket.xaml.csのbooleanプロパティはどこに設定する必要がありますか? ObservableCollection の内部にある必要がありますか? –

+0

Menu.Passedクラス – Archana

+0

ああ、ObservableCollectionのクラスは本当にありません。 Publicの後にクラスを入力した場合、それは:expected '>'私のコードの現在の状態で質問を更新しました。 –

0

Removeステートメントc.Remove(x => x.c)は、拡張で定義したラムダ式を提供しません。あなたは、あなたがIsSelected呼ばMenu.PassedDataでブール型プロパティを持っている必要があり

c.Remove(x => x.c == trueStatement) 
関連する問題