2010-11-10 27 views
0

Cela semble très simple et ça me tue! J'essaie d'utiliser une commande usercontrol avec des styles d'un ResourceDictionary d'un assembly externe, mais j'obtiens une exception à l'exécution.Utilisation de contrôles usuels avec des ressources statiques de l'assemblage externe

Voici comment reproduire:

  1. Créer une bibliothèque de classes silverlight appelée MyControls.dll
  2. Créer un usercontrol appelé Superchamp:

    <UserControl.Resources> 
        <ResourceDictionary Source="MyControls;component/Styles.xaml" x:Key="Styles" /> 
    </UserControl.Resources> 
    
    
    <Grid x:Name="LayoutRoot" Background="White"> 
        <TextBlock Style="{StaticResource MyStyle}" Text="Hello"/> 
    </Grid> 
    
  3. Créer un Styles.xaml ResourceDictionary et ajouter:

    <Style x:Key="MyStyle" TargetType="TextBlock"> 
        <Setter Property="FontSize" Value="15"/> 
        <Setter Property="FontWeight" Value="Bold"/> 
        <Setter Property="TextWrapping" Value="Wrap"/> 
        <Setter Property="Margin" Value="0,15,0,4"/> 
        <Setter Property="HorizontalAlignment" Value="Left"/> 
    </Style> 
    

  4. Créer une application Silverlight appelé SL et ajouter MyControls comme référence

  5. En MainPage.xaml Grille, ajoutez:

    <MyControls:SuperControl /> 
    
  6. Il compilera, mais l'exécution du application que vous obtenez "Impossible d'affecter à la propriété 'System.Windows.ResourceDictionary.Source'. [Ligne: 10 Position: 36]? »

  7. Je App.xaml a ajouté à

    <ResourceDictionary Source="/MyControls;component/Styles.xaml" /> 
    
  8. même erreur de l'application ... :(

Toutes les pensées

+0

J'ai eu un problème similaire et cause était en utilisant une barre oblique inverse (\) au lieu de barre oblique (/) lors de la référence du fichier. L'analyseur xaml dans VS était capable de résoudre l'emplacement, mais lors de l'exécution, une erreur était générée. Espérons que cela aidera quelqu'un d'autre. –

Répondre

0

Étape 2. Vous avez oublié /.

Source = "MyControls; composant/Styles.xaml"

Ecrire

Source = "/ MyControls; composant/Styles.xaml"