Search code examples
silverlightsilverlight-3.0uielement

How to Detach a Behavior from an UIElement in Code Behind for Silverlight?


In Silverlight 3.0 I have added a custom behavior to some UIElement in Code Behind.

I wanted to remove the Behavior later in runtime.

What is the C# syntax to Detach an already added Behavior from an UIElement?


Solution

  • I am guessing you are talking about a behavior deriving from the Behavior<T> class in the Blend SDK...

    Do you still have a reference to the behavior from when you attached it?

    MyCustomBehavior myBehavior = new MyCustomBehavior();
    myBehavior.Attach(myElement);
    ...
    myBehavior.Detach();
    

    EDIT

    If you no longer have a reference to the instance of the behavior when you want to detach it you can do something like this to detach all behaviors on a DependencyObject:

    foreach (var behavior in Interaction.GetBehaviors(myElement))
    {
        behavior.Detach();
    }