c# - ListView 中的 WPF、MVVM、EventBehaviourFactory,将事件绑定(bind)到命令

标签 c# wpf mvvm

我基本上是在尝试关注 http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html策略,将事件绑定(bind)到命令。

我有一个 ListView,我想在其中双击一行来启动一个 ICommand 实例。其上的 ListView 或 ListBoxItem 没有命令属性。这个问题(看起来)是通过使用附加属性解决的,但我个人仍然无法弄清楚如何在 ListView 上使用它。

我有一个“信号”集合,每个都有一个属性“名称”。
下面是我的 xaml 的一部分。

            <ListView ItemsSource="{Binding Signals}" >
                <ListBox.ItemContainerStyle>
                    <Style TargetType="{x:Type ListBoxItem}">
                        <Setter Property="{models:ListBoxItemBehaviour.DoubleClickCommand}" Value="{Binding Command1}" />
                    </Style>
                </ListBox.ItemContainerStyle>
                <ListView.View>
                   <GridView>
                      <GridViewColumn Header="Signal" DisplayMemberBinding="{Binding Name}" />
                   </GridView>
               </ListView.View>
           </ListView>

这不起作用。 ListBoxItemBehaviour 是一种行为的实现,按照上面的链接, Hook ListBoxItem.MouseDoubleClickEvent 事件。

我怀疑上面的错误很小,但对我来说并不明显。有什么建议么?

第一个错误是:“不支持嵌套类型:”..

最佳答案

ListView您可以使用 InputBindings 来获取鼠标和键盘输入。

要将 MouseDoubleClick 绑定(bind)到您可以使用的命令

<ListView.InputBindings>
   <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding ListViewDoubleClickCommand}"/>
</ListView.InputBindings>

关于c# - ListView 中的 WPF、MVVM、EventBehaviourFactory,将事件绑定(bind)到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24693150/

相关文章:

c# - 将文件分块发送到 HttpHandler

wpf - 如何将 Wpf DataGridColumn 绑定(bind)到对象?

c# - 单击时如何使命令不禁用按钮

wpf - 动画完成后运行代码

c# - Web 客户端和语言

c# - 在 iOS 上将自定义呈现的页面移动到状态栏下方

c# - 线程无法访问对象

mvvm - SharedTextSource 的 MvxLang 绑定(bind)语法

c# - C#开发者需要什么样的机器

wpf - 如何处理 MVVM 中的 Wpf DataGrid CellEditEnding 事件?