Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las extensiones de icono son un grupo de extensiones de marcado diseñadas para simplificar la creación de varios tipos de iconos (en concreto BitmapIcon
, BitmapIconSource
, FontIcon
, FontIconSource
, SymbolIcon
y SymbolIconSource
) usados en una variedad de controles XAML. El uso de estas extensiones no habilita nuevas funcionalidades per se, pero simplifica considerablemente la sintaxis XAML necesaria para crear instancias de estos tipos de iconos.
BitmapIconExtension
La extensión de marcado BitmapIconExtension
es similar en estructura a las dos extensiones anteriores, pero genera instancias BitmapIcon
en lugar de iconos basados en fuentes. Aquí se muestra cómo se puede usar:
<MenuFlyout xmlns:ui="using:CommunityToolkit.WinUI">
<!--Before-->
<MenuFlyoutItem Text="Click me!">
<MenuFlyoutItem.Icon>
<BitmapIcon Source="/Assets/myicon.png"/>
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<!--After-->
<MenuFlyoutItem
Text="No, click me!"
Icon="{ui:BitmapIcon Source=/Assets/myicon.png}" />
</MenuFlyout>
BitmapIconSourceExtension
La clase BitmapIconSourceExtension
refleja el tipo BitmapIconExtension
, siendo la única diferencia que devuelve una instancia BitmapIconSource
. Aquí se muestra cómo se puede usar:
<SwipeItems
xmlns:ui="using:CommunityToolkit.WinUI"
Mode="Reveal">
<SwipeItem Text="Send" IconSource="{ui:BitmapIconSource Source=/Assets/myicon.png}"/>
</SwipeItems>
FontIconExtension
El tipo FontIconExtension
proporciona la capacidad de crear instancias FontIcon
a partir de XAML con una representación más compacta que mediante la creación explícita de un nuevo objeto FontIcon
para asignar a la propiedad de destino. La propiedad también asigna todas las propiedades FontIcon
disponibles, por lo que las dos API exponen el mismo conjunto de opciones de personalización, simplemente a través de una sintaxis XAML diferente:
<CommandBar xmlns:ui="using:CommunityToolkit.WinUI">
<!--Before-->
<AppBarButton>
<AppBarButton.Icon>
<FontIcon Glyph="" FontFamily="{ThemeResource SymbolThemeFontFamily}"/>
</AppBarButton.Icon>
</AppBarButton>
<!--After-->
<AppBarButton Icon="{ui:FontIcon Glyph=}"/>
</CommandBar>
FontIconSourceExtension
La clase FontIconSourceExtension
refleja el tipo FontIconExtension
, pero genera instancias FontIconSource
en lugar de FontIcon
:
<SwipeItems
xmlns:ui="using:CommunityToolkit.WinUI"
Mode="Reveal">
<!--Before-->
<SwipeItem Text="Accept">
<SwipeItem.IconSource>
<FontIconSource Glyph=""/>
</SwipeItem.IconSource>
</SwipeItem>
<!--After-->
<SwipeItem Text="Accept" IconSource="{ui:FontIconSource Glyph=}"/>
</SwipeItems>
SymbolIconExtension
El tipo SymbolIconExtension
refleja la extensión de marcado FontIcon
, siendo la diferencia principal que usa un valor Symbol
para especificar el icono. Todas las demás propiedades de FontIconExtension
están disponibles, a excepción de la familia de fuentes, que siempre se establece en "Segoe MDL2 Assets". Aquí se muestra cómo se puede usar:
<CommandBar xmlns:ui="using:CommunityToolkit.WinUI">
<!--Before-->
<AppBarButton>
<AppBarButton.Icon>
<SymbolIcon Symbol="Play"/>
</AppBarButton.Icon>
</AppBarButton>
<!--After-->
<AppBarButton Icon="{ui:SymbolIcon Symbol=Play}"/>
</CommandBar>
Nota:
SymbolIconExtension
realmente devuelve un valor FontIcon
en lugar de uno SymbolIcon
. Esto se hace para incluir las propiedades adicionales (por ejemplo FontSize
, FontWeight
, etc.) que de lo contrario no habrían estado disponibles. Cuando no se modifican, el aspecto del icono resultante seguirá siendo el mismo que el que habría resultado del uso de una instancia SymbolIcon
.
SymbolIconSource
El tipo SymbolIconSourceExtension
es una alternativa para que FontIconSourceExtension
tome un valor Symbol
en lugar de un texto y muestre el icono con "Segoe MDL2 Assets". Es equivalente al tipo SymbolIconExtension
, excepto por el hecho de que devuelve una instancia FontIconSource
:
<SwipeItems
xmlns:ui="using:CommunityToolkit.WinUI"
Mode="Reveal">
<SwipeItem Text="Play" IconSource="{ui:SymbolIconSource Symbol=Play}"/>
</SwipeItems>
Comentarios
Todos los valores devueltos por estas extensiones de marcado pertenecen al espacio de nombres Windows.UI.Xaml.*
. Esto significa que solo funcionarán correctamente cuando se usen con controles de ese espacio de nombres y no desde Microsoft.UI.Xaml.*
(el espacio de nombres WinUI). Por ejemplo, al intentar usar FontIconSourceExtension
para establecer la propiedad IconSource
en Microsoft.UI.Xaml.Controls.SwipeItems
, no funcionará correctamente, ya que la extensión generará un valor Windows.UI.Xaml.Controls.FontIconSource
en lugar de uno Microsoft.UI.Xaml.Controls.FontIconSource
. Al trabajar con controles WinUI, tendrá que declarar manualmente los iconos que necesita con la sintaxis XAML explícita.
Ejemplos
Puede encontrar más ejemplos en las pruebas unitarias.
Windows Community Toolkit