WPF将命令绑定到带有命令参数的列表视图

时间:2019-10-04 11:14:42

标签: c# wpf

我有一个问题,我在XAML中有一个简单的列表视图,该视图绑定到项目集合:

<ListView ItemsSource="{Binding MainModel.Input}" Background="Black"  SelectionMode="Single" x:Name ="InputList">
 <i:Interaction.Triggers>
   <i:EventTrigger EventName="PreviewMouseLeftButtonDown" >
     <i:InvokeCommandAction Command="{Binding CheckItemCommand}" CommandParameter="{Binding ElementName=InputList, Path=SelectedItem}"/>
   </i:EventTrigger>
 </i:Interaction.Triggers>
 <!-- here is column binding but irrelevant to this question -->
</ListView>

命令如下:

    public ICommand CheckItemCommand => new Command(parm =>
    {
        responseDetails = new ResponseDetailsWindow { DataContext = new ResponseDetails((Input)parm, this) };
        responseDetails.ShowDialog();
    });

我可以将其绑定到SelectedItem,但这是一种特殊情况,这意味着此集合非常动态,如果我在列表更改期间选择了项目,则当所选项目在可观察列表中的位置更改时,我将执行多次命令。

使用命令,我将只发送一个状态,而我不在乎可观察的状态。

id选择列表命令上的某些项目并使用参数触发应该起作用,而且只有第一部分的Works命令正在启动,但是作为参数我得到的是空值,我也尝试过仅使用绑定,但是随后却没有得到视图模型从列表中选择值。那我在这里想念什么?

2 个答案:

答案 0 :(得分:1)

请尝试以下代码

<i:InvokeCommandAction Command="{Binding DataContext.CheckItemCommand}" CommandParameter="{Binding}"/>

答案 1 :(得分:0)

您可以将SelectedItem的{​​{1}}属性绑定到源属性,并仅从此源属性的设置器执行命令。

ListView触发时尚未选择该项目。