我正在尝试设置数据绑定ListBox的自动生成的ListBoxItem的输入绑定。 下面的代码不起作用。编译器抱怨“无法设置Property Setter'InputBindings',因为它没有可访问的set访问器。” 设置InputBindings的正确语法是什么?
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="ListBoxItem.InputBindings">
<Setter.Value>
<MouseBinding Command="{Binding OpenCommand}" Gesture="LeftDoubleClick"/>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
PS:发布不适用于Opera 10.51
答案 0 :(得分:3)
答案 1 :(得分:1)
如果你寻找一种较少“Hacky”的方法,你可以简单地处理ListBoxItem的Loaded事件。
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<EventSetter Event="Loaded" Handler="ListBoxItem_Loaded" />
</Style>
</ListBox.ItemContainerStyle>
然后在事件处理程序中添加你的InputBindings。
Private Sub ListBoxItem_Loaded(ByVal sender As System.Object, ByVal e As RoutedEventArgs)
Dim item = DirectCast(sender, ListBoxItem)
item.InputBindings.Add(New KeyBinding(UserCommands.EditCommand, Key.Enter, ModifierKeys.None))
item.InputBindings.Add(New KeyBinding(UserCommands.DeleteCommand, Key.Delete, ModifierKeys.None))
item.InputBindings.Add(New MouseBinding(UserCommands.EditCommand, New MouseGesture(MouseAction.LeftDoubleClick)))
End Sub
我知道这不是理想的MVVM解决方案,但它是我发现的最佳方式。