2010-05-26 4 views
0

Étant donné qu'un dictionnaire de ressources charge des ressources statiques dans la mémoire, existe-t-il un moyen de parcourir les ressources chargées en mémoire? Mon application Silverlight ne cesse de me dire qu'il ne peut pas trouver une ressource statique. Je me demande si j'ai un problème de convention de nommage ou somehting - Espérait itérer les ressources en mémoire pourrait aider à diagnostiquer tout problème ...Itération à l'aide de StaticResource chargée par ResourceDictionary

Je donne les résultats suivants app.xaml

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      x:Class="Module1.MyApp"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="/FSSilverlightApp;component/TransitioningFrame.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 

et modèle de contenu:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ControlTemplate x:Key="TransitioningFrame" TargetType="navigation:Frame"> 
     <Border Background="{TemplateBinding Background}" 
       BorderBrush="{TemplateBinding BorderBrush}" 
       BorderThickness="{TemplateBinding BorderThickness}" 
       HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
       VerticalAlignment="{TemplateBinding VerticalContentAlignment}"> 
      <ContentPresenter Cursor="{TemplateBinding Cursor}" 
          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          Margin="{TemplateBinding Padding}" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
          Content="{TemplateBinding Content}"/> 
     </Border> 
    </ControlTemplate> 
</ResourceDictionary> 

Répondre

1

les ressources définies dans Application.Resources sont implicitement disponibles à tous les contrôles de l'application, pas sûr de dictionnaires fusionnés. Vous pouvez définir un point d'arrêt dans un constructeur de contrôle et inspecter this.Resources, this.Resources.MergedDictionaries, Application.Resources et Application.Resources.MergedDictionaries pour voir si votre ressource est présente.

Essayez aussi de mettre les dictionnaires fusionnés dans votre contrôle, voir si cela fait une différence:

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/FSSilverlightApp;component/TransitioningFrame.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

<!--Use the style later in the same file--> 
<navigation:Frame Style={StaticResource TransitioningFrame} /> 
+0

hmmm. ajouter le dictionnaire à UserControl.Resources - semble faire tout fonctionner ... Pourquoi pensez-vous que ce serait? Lorsque la référence était dans l'app.xaml seulement je pouvais obtenir une refernece à l'élément via: let i2: ControlTemplate = downcast Application.Current.Resources.MergedDictionaries. [0]. ["TransitioningFrame"] montre qu'il est chargé - mais l'application a encore jeté l'exception – akaphenom

+0

Pas sûr, peut-être une sorte de dépendance circulaire jetant la clé dans les travaux? Peut-être que vous pouvez tester si c'est votre composant qui a des problèmes en plaçant une ressource simple, comme un pinceau, dans le dictionnaire fusionné et voir si elle est disponible dans le contrôle? –

+0

absolutley Je peux tourner autour avec ça. Mais je pense que j'en ai assez de ce fait, où je peux le passer à un ingénieur pour pomper des tables factices etc en place pour une démo. Avoir cette application à 100% f # n'a pas été facile - mais merci de m'avoir aidé à repérer l'une des dernières inconnues «fonctionnelles». – akaphenom

Questions connexes