Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除列表框中的多个选择_C#_Wpf_Mvvm_Listbox - Fatal编程技术网

C# 删除列表框中的多个选择

C# 删除列表框中的多个选择,c#,wpf,mvvm,listbox,C#,Wpf,Mvvm,Listbox,我有一个ListBox,其SelectionMode属性设置为Extended,以允许在ListBox内进行多个选择。列表框绑定到一个可观察集合。我想做的是,当我按下delete键时,列表框中的选定项将从ObservableCollection中删除。我知道如何设置keybinding并使用delete键的命令,但我不知道如何从列表框中获得多个选择 以下是列表框: <ListBox ItemsSource="{Binding XtfPaths}" SelectionMod

我有一个
ListBox
,其
SelectionMode
属性设置为
Extended
,以允许在ListBox内进行多个选择。列表框绑定到一个
可观察集合
。我想做的是,当我按下delete键时,列表框中的选定项将从ObservableCollection中删除。我知道如何设置keybinding并使用delete键的命令,但我不知道如何从列表框中获得多个选择

以下是列表框:

<ListBox ItemsSource="{Binding XtfPaths}"
         SelectionMode="Extended"/>

以下是viewmodel:

private ObservableCollection<String> _xtfPaths = new ObservableCollection<String>();
public ObservableCollection<String> XtfPaths
{
    get { return _xtfPaths; }
    set
    {
        if (null != value)
        {
            _xtfPaths = value;
            OnPropertyChanged("XtfPaths");
        }
    }
}
private observedcollection\u xtfPaths=new observedcollection();
公共可观测收集XtfPaths
{
获取{return\u xtfPaths;}
设置
{
if(null!=值)
{
_xtfPaths=值;
OnPropertyChanged(“XtfPaths”);
}
}
}
试试这个

<Grid>
    <StackPanel>
        <ListBox x:Name="list" Height="200"
        SelectionMode="Extended"
        ItemsSource="{Binding SampleItems}" >
        </ListBox>
        <Button  Content="Remove" Command="{Binding DeleteCommand}"
        CommandParameter="{Binding ElementName=list, Path=SelectedItems}">
        </Button>
    </StackPanel>
</Grid>

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MainViewModel1();
    }
}

public class MainViewModel1
{
    private ObservableCollection<string> m_items;
    public ObservableCollection<string> SampleItems
    {
        get { return m_items; }
        set { m_items = value; }
    }

    public ICommand DeleteCommand { get; private set; }

    public MainViewModel1()
    {
        DeleteCommand = new RelayCommand<object>(Delete, CanDelete);

        var items = new ObservableCollection<string>();
        var today = DateTime.Now;
        for (int i = 1; i <= 10; i++)
        {
            items.Add("Test"+i);
        }
        SampleItems = items;
    }

    private void Delete(object obj)
    {
        var items = new ObservableCollection<string>();
        foreach (var item in (IList)obj)
        {
            items.Add((string)item);
        }
        foreach (var item in items)
        {
            m_items.Remove(item);
        }
    }

    private bool CanDelete(object obj)
    {
        return true;
    }

}

公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
DataContext=新的MainViewModel1();
}
}
公共类MainViewModel1
{
私人可观察收集m_项目;
公共可观测采集样本项
{
获取{return m_items;}
设置{m_items=value;}
}
公共ICommand DeleteCommand{get;private set;}
公共主视图模型1()
{
DeleteCommand=新的RelayCommand(Delete,CanDelete);
var items=新的ObservableCollection();
var today=DateTime.Now;
对于(int i=1;i