私のスクリプトには2つの問題があり、理解を助ける必要があります。リスト内の一致するノードをすべて削除します
if
ステートメントは、元のリストに一致する値を探します。次にそれを削除します。これは何らかの理由で機能しません。 items.Remove(item)
は実際にアイテムを削除しません。
else文が機能します。しかし、私はこれをすべて1行で行うことができると感じています。
思考?可能であれば、私はそれをリストにすることを避けたいと思います。その元はObservableCollection
です。
var items = TreeViewCollection.ToList();
if (items.Contains(SelectedTreeViewItem))
items.Remove(SelectedTreeViewItem);
else
items.ForEach(e=>e.Nodes.Remove(SelectedTreeViewItem));
更新:Iveはもう少し意味をなさせるようにコードを更新しました。
私の目標は、これを1行にすることです。
if (TreeViewCollection.Contains(SelectedTreeViewItem))
TreeViewCollection.Remove(SelectedTreeViewItem);
else
TreeViewCollection.ToList().ForEach(e=>e.Nodes.Remove(SelectedTreeViewItem));
質問がわかりません。 'items.Remove()'を呼び出すと、その項目を削除する必要があります。しかし 'items'リストから削除します。代わりに 'TreeViewCollection'オブジェクトから削除しますか?あなたは良い[mcve]を提供し、そのコードが何をしているのか、そしてあなたが何をしたいのかを正確に説明する必要があります。 –
コードをデバッグして、それが 'if'の内部に入っていることを確認しましたか? –
はい私はそれがifの内部に入っているかどうかを見るためにコードをデバッグしました。私はコードにデバッグして、それがelseの内部に入るかどうかを調べました。 elseは期待通りに動作しますが、ifは動作しません。 –