Tengo un conjunto de controles Silverlight, llamado "MySilverlightControls". Varias carpetas en ese ensamblaje Tengo una clase que extiende una columna de cuadrícula de un proveedor externo, llamémosla "MyImageColumn.cs".Acceder a los elementos ResourceDictionary programáticamente
También he creado un diccionario de recursos llamado Generic.xaml
, este se encuentra en la carpeta Themes
del conjunto. En ese diccionario de recursos que he definido un ControlTemplate llamada MyImageColumnTemplate:
<ControlTemplate x:Name="MyImageColumnTemplate" >
<Grid Margin="8,8,4,4" MaxHeight="32" MaxWidth="32">
<Grid.Resources>
<localGrid:StatusColumnImageConverter x:Key="ImageContentConverter"/>
</Grid.Resources>
<Border Margin="5,5,0,0" Background="Black" Opacity="0.15" CornerRadius="5" />
<Border Background="#FF6E6E6E" CornerRadius="4,4,4,4" Padding="4" Margin="0,0,5,5">
<Border Background="White" CornerRadius="2,2,2,2" Padding="3">
<Image Source="{Binding EditValue, Converter={StaticResource ImageContentConverter}}" Stretch="Uniform"/>
</Border>
</Border>
</Grid>
</ControlTemplate>
Mi pregunta es: desde MyImageColumn, ¿cómo puedo programáticamente referencia/mostrarse la plantilla de control para que pueda asignar a una propiedad en la columna? Esperaría usar una sintaxis similar a esto:
ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];
pero esto siempre devuelve nulo. Cuando cargo el ensamblaje en Reflector, veo que el archivo Generic.xaml
está allí, el nombre del recurso es MySilverlightControls.g.resources
, y la ruta dentro de eso es themes/generic.xaml
.
¿Cómo puedo llegar exactamente a los elementos individuales en este diccionario de recursos?
Me ahorró mucho tiempo. Muchas gracias por la publicación del blog. Gran trabajo. – captonssj
Solo una nota sobre por qué @slugster hizo esas dos primeras líneas. El estilo 'Uri' del paquete no se carga y registra por defecto, lo que hace que 'Uri uri = new Uri (cualquier cadena de estilo Uri del paquete);' arroje una excepción. Esta forma de registrarlo es menos intrusivo para su código que esperar hasta después de haber creado su primer 'FrameworkElement' antes de permitirse usar el' paquete' Uri. –