【问题标题】:Make TreeViewItem control execute command when double clicked使TreeViewItem控件在双击时执行命令
【发布时间】:2011-07-22 06:02:27
【问题描述】:

我正在寻找一种在 WPF 中将命令绑定到 TreeViewItem 的方法,因此当我双击 TreeViewItem 时,会在我的 ViewModel(MVVM 模式)中执行 ICommand。 很像 Visual Studio 解决方案资源管理器。

我希望我可以使用 AttachedCommandBehaviour 之类的东西,但这不起作用。我猜是因为 TreeViewItem 本身不支持命令。

这是我的测试实现,它不起作用:

<TreeViewItem Header="Opret produktions ordre">
    <acb:CommandBehaviorCollection.Behaviors>
        <acb:BehaviorBinding Event="MouseLeftButtonDown" Command="{Binding TestCommand}"/>
    </acb:CommandBehaviorCollection.Behaviors>
</TreeViewItem>

有人对如何使这项工作提出建议吗?或者,也许您知道可以为我提供此功能的控件? 我当然希望有一个 MVVM 友好的解决方案。最好全部在 XAML 中。

【问题讨论】:

    标签: wpf xaml mvvm command treeviewitem


    【解决方案1】:

    您是否尝试过来自CodePlex Expression Blend sample libraryInvokeDataCommand 触发器?

    <i:EventTrigger EventName="Click">
          <si:InvokeDataCommand Command="{Binding ShoppingCart.CheckOutCommand}"/>
    </i:EventTrigger>
    

    如果您使用的是 WPF4,您将需要固定版本,请在此处阅读有关该问题的信息:http://blog.thekieners.com/2010/11/09/expression-blend-samples-not-working-with-silverlight-4-and-wpf-4/

    从这里下载示例解决方案(这是更新版本):http://expressionblend.codeplex.com/workitem/8148

    【讨论】:

    • 他们的文档很差。你有例子吗?
    • 确保下载示例解决方案,添加正确的链接。我发现示例库中的示例非常不言自明,也作为起点添加到我的答案中,但如果您需要更多信息,请告诉我!
    • 我有一个编译问题,您或许可以帮助我解决。 Expression.Samples.Interactivity 依赖于 System.Windows v2.0.50727。当我在项目中引用 Expression.Samples.Interactivity 程序集并使用 InvokeDataCommand 时,我收到一个编译错误,指出它无法解析对程序集 System.Windows 的依赖关系。任何想法?看起来像是 WPF2 的遗留物。
    • 您是否安装了 Expression Blend 4?如果没有,您可能必须下载 Expression SDK。否则不确定:)
    • 我不确定我是否希望我的解决方案依赖于此:) 而且我不想包含 WPF2 二进制文件。必须有其他解决方案。
    猜你喜欢
    • 2014-09-24
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多