WPF请求排列时手动重绘自定义控件

时间:2013-10-09 00:31:42

标签: c# wpf custom-controls

我有一个自定义控件,它有一个刷新方法,类似于:

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()方法。

0 个答案:

没有答案