首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WPF中处理Grid Splitter生成的事件?

如何在WPF中处理Grid Splitter生成的事件?
EN

Stack Overflow用户
提问于 2011-07-16 01:50:14
回答 3查看 7.9K关注 0票数 9

我想要一个事件处理程序,当网格拆分器被移动时处理事件,我不确定是否有一个,如果没有,我猜我可以在行的大小改变时生成一个事件?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-16 02:11:11

您可以更改行的大小,但是GridSplitter本身就是一个拇指,也有它自己的事件,如DragStarted和DragCompleted。更多细节here

编辑:如果您将GridSplitter设置为可聚焦,并允许其随键盘移动,请阅读Benlitz的回答以了解更多信息。

票数 13
EN

Stack Overflow用户

发布于 2014-03-19 11:24:20

我没有测试,但我非常确定,如果您使用键盘箭头(通过将焦点放在网格拆分器上)来调整行/列的大小,那么AresAvatar当前接受的答案将不会起作用。这是一种罕见但可能的情况,您应该在应用程序中预料到这种情况。

当移动网格拆分器(通过拖放或使用键盘箭头)时,它会更改网格的Width/HeightColumnDefinitions/RowDefinitions依赖属性。您可以轻松地在此属性更改时注册处理程序:

代码语言:javascript
复制
var heightDescriptor = DependencyPropertyDescriptor.FromProperty(RowDefinition.HeightProperty, typeof(ItemsControl));
heightDescriptor.AddValueChanged(myGrid.RowDefinitions[0], HeightChanged);

(例如,此代码段将跟踪网格第一行中的大小变化)。

然后,您可以在处理程序中处理调整大小,该处理程序在任何情况下都可以工作。

代码语言:javascript
复制
private void HeightChanged(object sender, EventArgs e)
{
    // TODO: handle row resize
}

通常,不建议依赖用户输入操作(鼠标拖动、键盘输入...)为了处理逻辑或可视动作/事件,因为几乎总是有几种方法可以使用不同的输入(鼠标、键盘、触摸屏、易于使用的工具...)来执行相同的动作。

票数 7
EN

Stack Overflow用户

发布于 2021-01-19 14:03:59

使用DragDelta。请注意,如果要更改大小,请使用实际属性作为当前大小,如ActualWidth而不是Width。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6711162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档