You'll need to be a bit more specific if you want to get a complete solution here, but let me see if I can help a bit...
If you just want to add any arbitrary control to the canvas and have it become draggable, that will be slightly more complicated, but let's operate under the assumption that you have a specific type of control you're adding. Just to keep everything organized, you might want to do this regardless, so it's easy to iterate through them.
So, say everything you put in the canvas that you want to be draggable is inside a "DragContainer" (A subclass of Border, maybe). You can use some WPF styles to make sure they all behave the same way...
<window.resources>
<style targettype="local:DragContainer">
<setter>
Property="dragcanvas:DragCanvas.CanBeDragged"
Value="True"/>
</setter></style>
</window.resources>
That little block will cause EVERY object of that type (Adjust the namespaces to whatever you're using) to have that property as soon as it's added to the window or its children.
But from the code you posted, it looks like you're trying to toggle dragging on and off with a button. That's where Data Binding comes in. The simplest way would be to add a toggle button to the window instead of just a button:
<togglebutton name="btnToggleDraggable" content="Drag On/Off" />
Once that's in place, you can modify the style code I posted above, to look like this:
<window.resources>
<style targettype="local:DragContainer">
<setter>
Property="dragcanvas:DragCanvas.CanBeDragged"
Value="{Binding IsChecked,ElementName=btnToggleDraggable,Mode=OneWay}"/>
</setter></style>
</window.resources>
So when you're adding UI controls, all you have to do is make sure they're wrapped up in a DragContainer, which could be as simple as this:
public class DragContainer : Border { }
You could even get fancy and add some sort of indicator on the DragContainer when dragging is enabled, such as using a ValueConverter to turn the borders red or add a drop shadow... WPF makes those things incredibly easy once you get the hang of it.