style resource wpf xaml resources staticresource

wpf - resource - Referencia recurso personalizado definido en otro archivo xaml



wpf text (2)

Estoy intentando crear un nuevo recurso en un archivo xaml y hacer referencia a él en otro archivo xaml. es decir, yo defino

<Window.Resources> <ImageBrush x:Key="TileBrush" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 32 32" ImageSource="MyImageButton.png" Opacity="0.3"> </ImageBrush> </Window.Resources>

Y tratar de usarlo en otro archivo xaml por

<Grid> <Button Background="{StaticResource TileBrush}" Margin="5" Padding="5" FontWeight="Bold" FontSize="14"> A Tiled Button </Button> </Grid>

Sin embargo, aparece el error "No se encontró la referencia StaticResource ''TileBrush''". Puedo hacer referencia al recurso desde el mismo archivo xaml pero no sé cómo hacerlo desde otro archivo.


Debes definir esto en el archivo app.xaml. Estos recursos se comparten a lo largo de todo el proyecto.


En WPF, las referencias de recursos funcionan como un árbol. Cada control tiene un recurso, y el control de los hijos puede acceder a los recursos de los padres. El diccionario de recursos de aplicación global se encuentra en el archivo App.xaml. En este archivo puede incluir varios diccionarios de recursos como un diccionario combinado. Vea este ejemplo de código:

<?xml version="1.0" encoding="utf-8"?> <Application ...> <Application.Resources> <ResourceDictionary> <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="View/SomeFileDictionary.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>

El SomeFileDictionary.xaml se encuentra en la carpeta View de la estructura de mi proyecto. Y tiene este aspecto:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ViewModel="clr-namespace:Cepha.ViewModel" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" ... > <DataTemplate DataType="{x:Type ViewModel:SomeType}"> <TextBox .../> </DataTemplate>...

Y cada clave de diccionario o plantilla de datos definida en este archivo (o App.xaml), puede ser referenciada en cualquier lugar de su proyecto. Espero que esto ayude...