Как удалить или скрыть привязку выбранного элемента из WPFlistview? - PullRequest
0 голосов
/ 04 июля 2011

Я привязываю некоторые значения к списку WPF. Я хочу удалить или скрыть строку при щелчке или выборе строки. Я пытаюсь сделать это следующим образом.

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

но это исключение. Как это сделать?пожалуйста, помогите мне ......

1 Ответ

0 голосов
/ 04 июля 2011

Вы можете использовать шаблон MVVM для его достижения. Вам нужно будет создать ObservableCollection, а затем вы можете написать команду, которая будет инициализироваться со своей коллекцией, и когда она должна выполнить, она получит объект, который вам нужно удалить через {Binding}. Это выглядит так:

//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 - шаблонный класс, который реализует интерфейс 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...