我有一个具有刷新方法的自定义控件,类似于:
public class MyControl : Canvas
{
// Dependency property for "data" used to draw the control here
public void Refresh()
{
Children.Clear();
// Using data, draw the control
Children.Add(new Line(...));
Children.Add(new Rectangle(...));
// etc.
}
}
现在,Refresh()
每次我想要更新控件的外观时,我都必须手动调用。我的依赖属性是为 设置的FrameworkPropertyMetadataOptions.AffectsArrange
,所以 WPF 知道修改属性会影响控件的排列并且应该重绘它。那么问题来了:
WPF 使用什么来告诉自定义控件它应该被重绘?它是一个事件,还是一个覆盖,应该如何使用它?我尝试过处理各种事件和覆盖,但似乎没有任何效果。那么,这样做的正确方法是什么?我想用Refresh()
WPF 将自动处理的“自动”替换/包装上面的方法。