Ответ 1
Думаю, тебе лучше разместить полотно внутри рамки, а затем указать толщину границы в кодебе. В вашем коде вы могли бы программным образом включить и выключить рамку.
XAML:
<Border x:Name="CanvasBorder" BorderBrush="Black">
<Canvas>
<!--Items here-->
</Canvas>
</Border>
Codebehide:
// Turn on border
CanvasBorder.BorderThickness = new Thickness(1);
// Turn off border
CanvasBorder.BorderThickness = new Thickness(0);