J'ai un ensemble de contrôles Silverlight, appelé "MySilverlightControls". Plusieurs dossiers dans cet assemblage j'ai une classe qui étend une colonne de la grille d'un fournisseur tiers, appelons-le "MyImageColumn.cs".Accès aux éléments ResourceDictionary par programme
J'ai également créé un dictionnaire de ressources appelé Generic.xaml
, situé dans le dossier Themes
de l'assembly. Dans ce dictionnaire de ressources que j'ai défini un ControlTemplate appelé 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>
Ma question est: de MyImageColumn, comment puis-je faire référence à programme/charger ce modèle de contrôle pour que je puisse l'affecter à une propriété sur la colonne? Je voudrais utiliser une syntaxe similaire à celle-ci:
ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];
mais cela retourne toujours null. Lorsque je charge l'assemblage dans Reflector, je vois que le fichier Generic.xaml
est là, le nom de la ressource est MySilverlightControls.g.resources
, et le chemin à l'intérieur est themes/generic.xaml
.
Comment exactement puis-je accéder aux éléments individuels de ce dictionnaire de ressources?
J'ai économisé beaucoup de temps. Merci beaucoup pour l'article du blog. Bon travail. – captonssj
Juste une note sur pourquoi @slugster a fait ces deux premières lignes. Le style Uri 'pack' n'est pas chargé et enregistré par défaut, provoquant Uri uri = new Uri (n'importe quelle chaîne de style Uri pack);' lancer une exception. Cette façon de l'enregistrer est moins intrusive pour votre code que d'attendre après avoir créé votre premier 'FrameworkElement' avant de vous autoriser à utiliser l'Uri' pack'. –