Когда вы создаете такой тип, как холст, как ресурс, вы создаете экземпляр типа ONE. Это означает, что вы не можете разместить этот ресурс в нескольких местах вашего приложения (элемент может находиться только в одном месте за раз). Думаю, вы должны взглянуть на использование шаблонов управления.
Для этого вам не нужен код.
Что-то вроде этого:
<ControlTemplate x:Key="Icon">
<Canvas>
<Path ... />
<Path ... />
</Canvas>
</ControlTemplate>
Тогда в другом месте вы делаете что-то вроде этого:
<Button>
<Control Template="{StaticResource Icon}" />
</Button>
Это строит регулярный ищет кнопку с иконкой, как это содержание. Содержимое этой кнопки - это ваш значок.
Если, однако, вы хотите, чтобы полностью изменить шаблон вашей кнопки, то вы могли бы сделать так
<ControlTemplate x:Key="Icon" TargetType="Button">
<Canvas>
<Path ... />
<Path ... />
</Canvas>
</ControlTemplate>
Тогда в другом месте вы делаете что-то вроде этого:
<Button Template="{StaticResource Icon}" />
Заметьте, что это ISN отличный стиль для кнопки. Посмотрите на this example from Microsoft на пример более полнофункционального шаблона кнопок.
EDIT
Если у вас есть в вашем ControlTemplate
в ContentPresenter
, то нет никакой необходимости, чтобы назначить шаблон для управления содержимым. Обратите внимание, что любой класс, полученный из Control
, может быть шаблоном, включая Control
. Поэтому для того, чтобы поместить элемент в вашей точки зрения, то вы можете просто использовать:
<Control Template="{StaticResource Icon}" />
Это использует широкий применимый тип в иерархии, который также является самым легким.
Я обновил свой ответ с дополнительной информацией для вы. –