我想要一个事件处理程序在移动网格分割器时处理事件,我不确定是否有一个,如果没有,我想我可以在行的大小改变时生成一个事件?
感谢。
答案 0 :(得分:12)
你可以改变行的大小,但GridSplitter本身就是一个Thumb,所以它有自己的事件,比如DragStarted和DragCompleted。更多详情here。
编辑:如果您使GridSplitter具有焦点并允许其通过键盘移动,请阅读Benlitz的答案以获取更多信息。
答案 1 :(得分:6)
我没有测试过,但我很确定AresAvatar当前接受的答案如果您使用键盘箭头调整行/列的大小(通过给出专注于网格分割器)。这是您应该在申请中预期的罕见但可能的情况。
移动网格分割器时(通过拖动' n'删除或使用键盘箭头),它会更改Width
的{{1}} / Height
依赖项属性网格的/ ColumnDefinition
。您可以在此属性更改上轻松注册处理程序:
RowDefinition
(此代码段将用于跟踪网格第一行中的大小更改)。
然后你可以处理在每种情况下都适用的处理程序中的resize。
var heightDescriptor = DependencyPropertyDescriptor.FromProperty(RowDefinition.HeightProperty, typeof(ItemsControl));
heightDescriptor.AddValueChanged(myGrid.RowDefinition[0], HeightChanged);
通常,建议不要依赖用户输入操作(鼠标拖动,键盘输入......)来处理逻辑或可视动作/事件,因为几乎总有几种方法可以使用相同的操作不同的输入(鼠标,键盘,触摸屏,易用工具......)。
答案 2 :(得分:0)
使用 DragDelta。请注意,如果您想更改大小,请将 Actual 属性用作当前大小,例如 ActualWidth 而不是 Width。