Вы уверены, что вам нужно вручную создавать и управлять всем этим самостоятельно?
Вы можете написать поведение, присоединяемое к тем холстам, в котором вы можете подписывать методы на события контроллеров.
class CanvasBehaviour : Behavior<Canvas>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.IsVisibleChanged += this.MyMethods;
}
private void MyMethods(object sender, DependencyPropertyChangedEventArgs e)
{
// Do what you want
}
}
Вам нужно будет использовать using System.Windows.Interactivity;
Использование:
в вашем xaml, включите
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
и на контроллере
<Canvas>
<i:Interaction.Behaviors>
<myBehaviours:CanvasBehaviour />
</i:Interaction.Behaviors>
</Canvas>