c# - ListViewItem MouseDoubleClick MVVM方式

标签 c# .net wpf mvvm mvvm-light

我正在将我的项目转换为使用 MVVM Light。

到目前为止,一切工作正常,直到我陷入将 ListViewItem MouseDoubleClick 绑定(bind)到命令的困境。

现在看起来像这样:

<ListView x:Name="ItemsFromStash" Grid.Column="0" Grid.Row="1" 
      VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
      ItemsSource="{Binding DropBox.DroppedItems}" 
      ItemTemplate="{DynamicResource DropItemTemplate}"
      SelectedItem="{Binding DropBox.SelectedDropItem}">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <EventSetter Event="Control.MouseDoubleClick" 
                         Handler="EventSetter_OnHandler"/>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

我想让它看起来像这样:

<ListView x:Name="ItemsFromStash" Grid.Column="0" Grid.Row="1" 
          VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
          ItemsSource="{Binding DropBox.DroppedItems}" 
          ItemTemplate="{DynamicResource DropItemTemplate}"
          SelectedItem="{Binding DropBox.SelectedDropItem}">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <Custom:EventToCommand Command=
                        "{Binding DropBox.RenameItemCommand, Mode=OneWay}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

但它说:

Property 'Triggers' is not attachable to elements of type 'Style'

我尝试将命令移至 ListView.MouseDoubleClick,但有时 SelectedItem 为空。

应该怎么做?

最佳答案

以下代码适用于我的列表框,它应该是相同的:

<ListBox x:Name="listbox_name_here" 
    ItemsSource="{Binding LastEntries}"
    SelectedItem="{Binding SelectedExercise, UpdateSourceTrigger=PropertyChanged}"
    MinHeight="150" ToolTip="Double click to edit"
    >

  <i:Interaction.Triggers>
      <i:EventTrigger EventName="MouseDoubleClick">
         <Command:EventToCommand Command="{Binding your_command_name_here}" 
              CommandParameter="{Binding ElementName=listbox_name_here, 
                                         Path=SelectedItem}" />
      </i:EventTrigger>
  </i:Interaction.Triggers>

</ListBox>

请注意,命令参数使用列表框(在您的例子中为 ListView )名称来绑定(bind)所选项目的目标。

关于c# - ListViewItem MouseDoubleClick MVVM方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760180/

相关文章:

.net - protobuf-net 和从泛型集合派生

c# - 在 .Net 中寻找 'Asynchronous' 字的解释?

wpf - 如何禁用 WPF TextBox 中的快捷方式

.net - 为什么回收不起作用?

c# - 在运行时合并 WPF ResourceDictionary

C# Visual Studio 没有为一个或多个必需参数给出值

c# - 从 POJO 到 POCO 的转换

c# - 我如何检测 List<string> 是否已更改?最后添加的项目是什么?

C# LINQ 构建具有匿名类型的表达式

c# - 动态Where Linq 到实体