WPF可观察收集。从子窗口修改

时间:2011-08-17 09:06:19

标签: c# wpf

这是我的收藏:

   public ObservableCollection<CheckOutData> _CheckOutCollection = new ObservableCollection<CheckOutData>();
      public ObservableCollection<CheckOutData> CheckOutCollection
            {
                get { return _CheckOutCollection; }
            }

            public class CheckOutData
            {
                public int ID { get; set; }
                public string RoomType { get; set; }
                public string RoomNumber { get; set; }
                public decimal RoomPrice { get; set; }
                public string RoomPriceWithCurrency { get; set; }
                public decimal Discount { get; set; }
                public decimal DiscountedPrice { get; set; }
                public string DiscountedPriceWithCurrency { get; set; }
                public string CheckIn { get; set; }
                public string CheckOut { get; set; }
                public int TotalDay { get; set; }
                public string CheckOutHour { get; set; }
        }

我有另一个窗口要执行以下操作:添加CheckOutData公共字符串serviceName {get; set} 这怎么办?我甚至没有在我的孩子窗口看到checkoutdata。 所以我的主要任务是在checkoutdata中添加新集合,然后重新绑定datagrid。任何人都可以帮助我吗?

私人CheckOut m_parent;

public AddActionService(CheckOut parent)
{
    InitializeComponent();
    m_parent = parent;

}

1 个答案:

答案 0 :(得分:1)

您可能需要考虑某种事件聚合器。这样,任何表单的代码(或ViewModel / Presenter,如果您使用MVVM / MVP)都可以发送由聚合器拾取并分发给已订阅该事件的任何其他表单/ ViewModel / Presenter的消息。这种方法意味着您的表单不再紧密耦合在一起。他们根本没有相互提及。他们通过事件聚合器进行通信,他们甚至不知道是否有任何对象正在监听这些事件。

您还可以考虑更进一步,采用“域事件”样式,这样您不仅可以在UI中对这些事件做出反应,还可以对系统中其他地方的域对象做出反应,包括通过外部发送消息用于调用Web服务,更新数据库,将消息放入队列等的服务。