对象之间的WPF事件处理

时间:2011-09-06 23:21:05

标签: c# wpf datagrid

我是来自Obj-c背景的C#/ WPF新手。我不确定这在面向对象设计方面是如何工作的,以及不同类如何看待彼此。

所以我有一个大视图(MainView),底部有一些自定义绘图和一个数据网格(Datagrid位于其单独的xaml中,后面有.cs文件)。有一个自定义对象被添加到绘图中,当您拖动它时,数据网格会更新(通过使用dataGrid.ScrollIntoView)。 ScrollIntoView的代码位于Datagrid的xaml.cs文件中。

对我而言,这是有道理的,因为MainView具有所有组件并“看到”所有对象,因此当调用dragWindow的事件处理程序时,MainView会请求DataGrid,并调用其方法来更新其列位置。 (这是我理解的方式,如果我错了,请随时纠正我)。

现在我也想走另一条路。因此,如果我水平更新滚动条,那么MainView中的dragwindow将会更新。这对我来说没有多大意义。我可以在datagrid的xaml.cs中创建一个事件处理程序。但它没有看到MainView中的dragWindow对吗?所以我不太确定如何开始实现这个功能。任何帮助总是受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:2)

您的网格控件应公开一个事件,以通知任何消费者(在这种情况下为MainView)滚动已经发生。

public class YourGridControl
{
    public event EventHandler GridScrolled;
}
然后,

MainView可以在设计器或代码中为此事件附加处理程序:

gridCtrl.GridScrolled += OnGridScrolled;

private void OnGridScrolled(object sender, EventArgs e)
{
    // Logic here
}