2011-07-04 3 views
0

WPFのlistview.Iにいくつかの値をバインドします。クリックするか行を選択すると、一部の行が削除または非表示になります。これは次のように行います。WPFlistviewから選択したアイテムのバインディングを削除または非表示にするにはどうすればいいですか?

listview.Items.RemoveAt(listview.Items.IndexOf(listview.SelectedItem)));

しかし、これを行うには例外が発生しますか?助けてください......

+0

が含まれていますされ

//View model public class FileGroupViewModel : ModelObject { private ObservableCollection<FileGroup> fileGroups; public FileGroupViewModel (ObservableCollection<FileGroup> _initialFileGroup) { this.fileGroups = _initialFileGroup; } public ObservableCollection<FileGroup> FileGroups { get { return fileGroups; } set { fileGroups = value; } } public ICommand DeleteFileGroup { get { return new RemoveItemCommand<FileGroup>(FileGroups); } } } 

RemoveItemCommand:このようなその表情アイテムのデータリストに追加するには、リストビューではなく、データリスト自体からアイテムを削除する必要があります。しかし、それは必ずしも例外の原因ではありません。あなたが本当に助けることができるようになるには、もう少しコードを投稿する必要があります。 – Ross

答えて

0

MVVMパターンを使用してそれを実現することができます。 ObservableCollectionを作成してから、そのコレクションで初期化するコマンドを書くことができます。実行するときは、削除するオブジェクトを{Binding}で取得します。 - あなたのリストビューがバインドされている場合のICommandインターフェイスに

public class RemoveItemCommand<T> : ICommand 
{ 
    private ObservableCollection<T> _items; 
    public RemoveItemCommand(ObservableCollection<T> items) 
    { 
     _items = items; 
    } 
    public void Execute(object parameter) 
    { 
     _items.Remove((T)parameter); 
    } 
    public bool CanExecute(object parameter) 
    { 
     return true; 
    } 
    public event EventHandler CanExecuteChanged; 
} 

を実装テンプレートクラスは、その後、あなたのビューはこのような何か^

<DataTemplate> 
    <Button Command="{StaticResource DeleteCommand}" CommandParameter="{Binding}" Text="{Binding}" /> 
</DataTemplate> 
+0

それはすべて明確ですか? – stukselbax

+0

これは私には分かりません....... – hmlasnk

+0

これは別の方法を与えることができますか? – hmlasnk

関連する問題