我想要一个事件处理程序,当网格拆分器被移动时处理事件,我不确定是否有一个,如果没有,我猜我可以在行的大小改变时生成一个事件?
谢谢。
发布于 2011-07-16 02:11:11
您可以更改行的大小,但是GridSplitter本身就是一个拇指,也有它自己的事件,如DragStarted和DragCompleted。更多细节here。
编辑:如果您将GridSplitter设置为可聚焦,并允许其随键盘移动,请阅读Benlitz的回答以了解更多信息。
发布于 2014-03-19 11:24:20
我没有测试,但我非常确定,如果您使用键盘箭头(通过将焦点放在网格拆分器上)来调整行/列的大小,那么AresAvatar当前接受的答案将不会起作用。这是一种罕见但可能的情况,您应该在应用程序中预料到这种情况。
当移动网格拆分器(通过拖放或使用键盘箭头)时,它会更改网格的Width/Height的ColumnDefinitions/RowDefinitions依赖属性。您可以轻松地在此属性更改时注册处理程序:
var heightDescriptor = DependencyPropertyDescriptor.FromProperty(RowDefinition.HeightProperty, typeof(ItemsControl));
heightDescriptor.AddValueChanged(myGrid.RowDefinitions[0], HeightChanged);(例如,此代码段将跟踪网格第一行中的大小变化)。
然后,您可以在处理程序中处理调整大小,该处理程序在任何情况下都可以工作。
private void HeightChanged(object sender, EventArgs e)
{
// TODO: handle row resize
}通常,不建议依赖用户输入操作(鼠标拖动、键盘输入...)为了处理逻辑或可视动作/事件,因为几乎总是有几种方法可以使用不同的输入(鼠标、键盘、触摸屏、易于使用的工具...)来执行相同的动作。
发布于 2021-01-19 14:03:59
使用DragDelta。请注意,如果要更改大小,请使用实际属性作为当前大小,如ActualWidth而不是Width。
https://stackoverflow.com/questions/6711162
复制相似问题