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

时间:2011-07-15 17:50:14

标签: wpf

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

感谢。

3 个答案:

答案 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。