我有一个问题,我在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命令正在启动,但是作为参数我得到的是空值,我也尝试过仅使用绑定,但是随后却没有得到视图模型从列表中选择值。那我在这里想念什么?
答案 0 :(得分:1)
请尝试以下代码
<i:InvokeCommandAction Command="{Binding DataContext.CheckItemCommand}" CommandParameter="{Binding}"/>
答案 1 :(得分:0)
您可以将SelectedItem
的{{1}}属性绑定到源属性,并仅从此源属性的设置器执行命令。
在ListView
触发时尚未选择该项目。