从ItemControl中删除项目

use*_*961 0 c# wpf xaml

我的类有一个我的viewmodel类的ObservableCollection,我在xaml中设置Itemcontrol的itemsource,如下所示

        <ItemsControl ItemsSource="{Binding ConditionItems}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Expander Background="#FFD0D7EB">
                        <StackPanel>
                                <Button Content="Delete" HorizontalAlignment="Right" Width="180" Margin="0,0,12,10" Command="{Binding DeleteItem}" CommandParameter="{Binding}">
                                </Button>                             </StackPanel>
                    </Expander>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我的DeleteItem永远不会被调用.

    private RelayCommand _DeleteRule;
    private void DoDeleteRule(object item)
    {
        if (item != null)
        {
            MessageBox.Show("in del");
        }
    }

    public ICommand DeleteItem
    {
        get
        {
            if (_DeleteRule == null)
                _DeleteRule = new RelayCommand(o => DoDeleteRule(o));
            return _DeleteRule;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在xaml做错了吗?

Pat*_*man 5

使用ItemsControl绑定{Binding ConditionItems},因此它希望DeleteItem命令位于该列表的子项内.我想这不是这种情况,DeleteItem存在于ViewModel.

你可以绑定到DataContextWindow,例如,在那里你可以找到的DeleteItem命令.或者创建一个代理元素.