【发布时间】:2013-11-04 01:02:23
【问题描述】:
我正在转换我的项目以使用 MVVM Light。
到目前为止,一切正常,直到我无法将 ListViewItem MouseDoubleClick 绑定到命令。
现在看起来是这样的:
<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>
但它说:
“触发器”属性不能附加到“样式”类型的元素
我尝试将命令移动到 ListView.MouseDoubleClick,但有时 SelectedItem 为空。
应该怎么做?
【问题讨论】:
-
如果识别项目对您很重要,您可以创建一个行为,在其中添加一个处理程序以将单击事件添加到列表视图,并且 e.OriginalSource 应该是列表视图项目
-
你知道为什么它们有时为空吗?你能重复这种行为吗?此外,对于将来的参考,下一点在问题中是相当无用的,因为它没有添加任何内容,只是让人们阅读他们不需要的代码:
Grid.Column="0" Grid.Row="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"。 -
@Noctis 不幸的是我不能每次都重复。这似乎是随机的。
标签: c# .net wpf mvvm mvvm-light