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)是一个函数,但当我选中或取消选中任何复选框时,不会输入它。
任何帮助将不胜感激。
问题是,列表项的数据上下文的类型为FilterModel,但FilterCommand位于父视图模型中。
尝试对命令进行以下绑定:
{Binding DataContext.FilterCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2980 次 |
| 最近记录: |