我有一个自定义面板,它定义了这个依赖属性:
public static readonly DependencyProperty DragPositionProperty =
DependencyProperty.Register(
"DragPosition",
typeof(Point),
typeof(LogViewHeaderPanel),
new FrameworkPropertyMetadata(
new Point(),
FrameworkPropertyMetadataOptions.AffectsParentArrange
)
);
注意:我也尝试过 FrameworkPropertyMetadataOptions.AffectsArrange ......
LogViewHeaderPanel 是我的名为 LogViewHeader 的自定义 ItemsControl 的面板。它的项目是 ColumnHeader 类型。每当鼠标移动,并且在 LogViewHeader 中满足一些其他条件时,目标 ColumnHeader 使用以下代码设置属性:
_currentlyActiveColumnHeader.SetValue(
LogViewHeaderPanel.DragPositionProperty,
new Point(suggestedXPosition, originalPosition.Y)
);
如果我在 LogViewHeaderPanel.ArrangeOverride 的覆盖上放置一个断点,我可以看到它在 LogViewHeader 被创建/调整大小时被调用,但在 DragPosition 属性被设置在它的孩子上时不会被调用。
为什么在设置属性时 FrameworkPropertyMetadataOptions.AffectsParentArrange 参数不触发排列?