【问题标题】:How to call two separate command from one user control in wpf?如何从 wpf 中的一个用户控件调用两个单独的命令?
【发布时间】:2018-04-04 07:53:51
【问题描述】:

我有用户控件,其中包含两个按钮“添加”和“删除”,它们调用命令将数据添加到数据网格中。我两次使用这个用户控件。

我还有两个 DataGrid 用于“员工”和“部门”。

This is UI.

那么我如何为每个控制按钮附加两个不同的命令呢?

Those are buttons of User Control and attached Commands.

(对不起英语。)

【问题讨论】:

  • 如果你想在一个按钮上附加两个不同的命令,你很可能做错了什么
  • 如果您可以将您拥有的任何代码添加到问题本身中,这将非常有帮助
  • 您可以做的简单方法是公开您的用户控件的属性,该属性接受参数(作为需要执行操作的实体,例如用户/部门),然后调用相应的服务/视图模型方法您的控件在这种情况下需要有参考
  • 如果我正确理解您的问题,您可以在用户控件中添加一个事件;甚至是依赖属性,只需给它一个动作
  • 不是一个按钮中的两个命令,而是每个使用控制按钮一个命令。就像我点击顶部的“添加”按钮,它应该添加到部门数据网格中,或者如果点击“添加”,它应该添加到员工数据网格中。但没有 onclick 事件。 #Kajbo

标签: c# wpf datagrid tabcontrol


【解决方案1】:

当您查看图片时,我认为这个问题相当清楚。 更多解释将允许准确描述如何执行此操作,但这里是这样。

DataContext 沿控件树继承。 图中有两个扩展器。 让我们调用这些用户控件的内容中的任何内容。也许他们是,也许他们不是。没关系。我们称它们为部门和员工详细信息。 假设 Delete 按钮绑定 DeleteCommand。 如果将 Departments 的 datacontext 设置为公开 DeleteCommand ICommand 属性的视图模型,那么它将绑定到该视图模型。 同样,将 Staff Details 的 datacontext 设置为另一个视图模型,该视图模型公开了一个删除命令,然后 Staff Details 中的按钮将绑定到 Staff Details 视图模型中的 DeleteCommand。

您所需要的只是两个不同的视图模型,其中包含这些不同的命令,并使它们成为扩展器的数据上下文。

【讨论】:

  • 部分理解,看了你的回答我明白了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
相关资源
最近更新 更多