我有以下课程:
public class MyCustomCanvas : Canvas
{
public static readonly DependencyProperty SpritesProperty = DependencyProperty.Register(
"Sprites",
typeof(ObservableCollection<Sprite>),
typeof (MyCustomCanvas),
new FrameworkPropertyMetadata(
null,
FrameworkPropertyMetadataOptions.AffectsRender|FrameworkPropertyMetadataOptions.AffectsParentMeasure));
public ObservableCollection<Sprite> Sprites
{
get { return (ObservableCollection<Sprite>) GetValue(SpritesProperty); }
set { SetValue(SpritesProperty, value); }
}
Sprite类实现INotifyPropertyChanged
。 Sprites属性绑定到其他一些集合。
我想要实现的是,只要属性在集合中的精灵中发生变化,或者每当我在集合中添加或删除项目时,画布都会自行重绘。
我知道我可以为每个精灵的Property Changed事件处理程序添加一个函数,但我想知道是否有更好的方法来执行此操作。
提前致谢。
答案 0 :(得分:0)
使用ItemsControl并将Panel设置为Canvas可能更容易。