WPF MVVM:EventTrigger 在 CheckBox 内不起作用

fra*_*osy 0 c# wpf checkbox eventtrigger mvvm

我正在用 MVVM 风格的 WPF 构建一个应用程序。DataGrid当我选中或取消选中多个用于过滤的复选框时,我试图对我的过滤器进行过滤。

我已经找到了解决方案Interaction.Triggers,但在这种情况下它对我不起作用。

这是我的代码:

<ListBox 
            ItemsSource="{Binding PortsFilterSource}"
            Background="LightGray"
            BorderThickness="0"
            Grid.Column="1">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox 
                        Content="{Binding Name}"
                        IsChecked="{Binding IsChecked}">

                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="Unchecked">
                                <i:InvokeCommandAction Command="{Binding FilterCommand}"/>
                            </i:EventTrigger>
                            <i:EventTrigger EventName="Checked">
                                <i:InvokeCommandAction Command="{Binding FilterCommand}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                    </CheckBox>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了FilterCommand。我的 C# 代码中有这样的内容:

public DelegateCommand<object> FilterCommand { get; set; }
...
FilterCommand = new DelegateCommand<object>(Filter);
Run Code Online (Sandbox Code Playgroud)

Filter(object obj)是一个函数,但当我选中或取消选中任何复选框时,不会输入它。

任何帮助将不胜感激。

Jan*_*Net 5

问题是,列表项的数据上下文的类型为FilterModel,但FilterCommand位于父视图模型中。

尝试对命令进行以下绑定:

{Binding DataContext.FilterCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}
Run Code Online (Sandbox Code Playgroud)