gpt4 book ai didi

c# - 附加事件?如何在运行时删除 WPF DataGrid 的 ScrollChanged 事件处理程序

转载 作者:行者123 更新时间:2023-11-30 14:38:32 25 4
gpt4 key购买 nike

WPF DataGrid类(不是 Windows 窗体 DataGrid!)可以设置为在没有外部 ScrollViewer 的情况下自动处理滚动,并且可以通过像这样编写 XAML 为控件的内部滚动条注册事件处理程序:

<DataGrid ScrollViewer.ScrollChanged="dGrid_ScrollChanged"  />

如果我错了请纠正我,但在这种情况下,内部 ScrollViewer 似乎是某种未记录的附加属性。 ScrollViewer 不是 DataGrid 的公共(public)字段,您不会在 DataGrid 文档中找到对 ScrollViewer 或 ScrollChanged 事件的引用。换句话说,简单地执行 myDataGrid.ScrollViewer.ScrollChanged += dGrid_ScrollChanged 是行不通的。

所以我的问题是,如何在运行时为这个 ScrollChanged 事件添加或删除事件处理程序?我在努力解决问题的同时也在努力理解这里发生的事情,所以解释越多越好。

最佳答案

尝试在您的代码后面使用 UIElement 的 AddHandler 和 RemoveHandler -

dg.AddHandler(ScrollViewer.ScrollChangedEvent, new ScrollChangedEventHandler(dg_ScrollChanged));
dg.RemoveHandler(ScrollViewer.ScrollChangedEvent, new ScrollChangedEventHandler(dg_ScrollChanged));

由于 ScrollViewer 不是您的 dataGrid 的依赖属性,您需要使用 AddHandler 进行 Hook 。就像你不能像这样简单地设置 Grid.RowSpan dg.Grid.RowSpan = 2您必须设置附加属性,如 dg.SetValue(Grid.RowSpanProperty, 2)您需要为附加属性 Hook 的事件也是如此。

关于c# - 附加事件?如何在运行时删除 WPF DataGrid 的 ScrollChanged 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7841511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com