0

假设我有一个复合控件,其中有一个 ListBox 控件,其中列出了员工,例如,另一个控件包含多个 TextBox 控件,其中包含员工的详细信息。

当从 ListBox 控件中选择一个员工时,我需要将一个 Employee 对象传递给“详细”控件,然后将每个 TextBox 控件的 Text 属性分配给它们与 Employee 对象的相关属性。

我有两个解决方案可以将 Employee 对象传递给“详细信息”控件,但我不确定哪个是最好的。

Solution 1 : Expose a Employee property in the "detail" control so when an employee is selected, I could do detailControl.Employee = selectedEmployee.

解决方案2:在主控件中公开一个事件,并在选择员工时触发它。“详细信息”控件将订阅该事件并通过事件的 eventargs 接收 Employee 对象。

我知道这两种方法都可以正常工作。我只是不确定最好使用什么。

有人说您应该使用自定义事件在控件之间传递数据,这是一种最好的松散耦合方法。

有人说实现自定义事件需要更多时间,因为您必须创建它们,向其中添加属性等,因此使用公开属性更快更简单。

你有什么建议?

4

1 回答 1

1

好吧,在我的理想世界中,您将拥有某种控制器。

主控件将引发控制器将侦听的事件。然后控制器将解码应该通知谁,即细节控制。

这完全解耦了 UI 组件,提供了通常的好处,包括方便的单元测试。

于 2012-08-03T14:14:15.710 回答