我有一个自定义控件,它有一个刷新方法,类似于:
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使用什么来告诉自定义控件应该重绘它?它是一个事件,还是一个覆盖,它应该如何使用?我已经尝试过处理各种事件和覆盖,似乎没有任何工作。那么,这样做的正确方法是什么?我想用WPF自动处理的“自动”替换/包装上面的Refresh()
方法。