Ресурсами могут быть любые общие объекты, такие как стили, шаблоны, кисти и цвета.Однако элементы управления, фигуры и другие FrameworkElements
недоступны для совместного использования, поэтому они не могут быть объявлены как ресурсы многократного использования.Для получения дополнительной информации об общем доступе см. Раздел XAML, который должен быть доступен для общего доступа раздел.
Canvas
- это элемент управления, который нельзя использовать совместно, и который вы не можете использовать напрямую, так какодин ресурс.В качестве обходного пути я рекомендую вам создать собственный стиль AppBarButton
в качестве ресурса и настроить его.Внутри нового стиля AppBarButton
вы можете заменить содержимое по умолчанию Icon
на Canvas
, которое вы определили выше, Icon
определяется элементом управления ViewBox
в стиле с именем ContentViewbox
.Например:
<Page.Resources>
<Style x:Key="AppBarButtonStyle1" TargetType="AppBarButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="AppBarButton">
<Grid x:Name="Root" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" MinWidth="{TemplateBinding MinWidth}" MaxWidth="{TemplateBinding MaxWidth}">
...
<Grid x:Name="ContentRoot" MinHeight="{ThemeResource AppBarThemeMinHeight}">
...
<Viewbox x:Name="ContentViewbox" AutomationProperties.AccessibilityView="Raw" HorizontalAlignment="Stretch" Height="20" Margin="0,14,0,4">
<ContentPresenter x:Name="Content" Foreground="{TemplateBinding Foreground}" Height="20">
<Canvas Height="77" Width="77">
<Path Data="F1 M 16,12 20,2L 20,16 1,16" Fill="#FF000000"/>
</Canvas>
</ContentPresenter>
</Viewbox>
...
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<AppBarButton Style="{StaticResource AppBarButtonStyle1}" Label="PathIcon" />
</Grid>