2010-11-22 16 views
1

J'ai un fichier XAML lâche ...Comment prendre conscience lâche contenu XAML des contrôles personnalisés

<Style 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:MyNamespace" 
    TargetType="{x:Type local:CustomControl}"> 
    <Setter Property="HoverOpacity" Value="1.0"/> 
</Style> 

... que je veux charger à l'exécution. Lorsque je le fais, je reçois une exception indiquant, "Type référence ne peut pas trouver le type public nommé 'CustomControl'." Comment puis-je rendre le XAML lâche de mon espace de noms?

Je dois utiliser HoverOpacity qui est une propriété de dépendance du CustomControl. Voici le code que je suis actuellement en utilisant pour charger le XAML:

var resource = Application.GetResourceStream(new Uri("pack://application:,,,/Assets/HoverStyle.xaml")); 

XamlReader.Load(resource.Stream); 

BTW, je me rends compte que le XAML est simple et je ne pouvais tout simplement insérer le Style dans le code, mais ceci est un monde bonjour XAML; ça va devenir beaucoup plus complexe, impliquant des animations et autres.

P.S. Une autre solution consisterait à attacher un fichier XAML à un contrôle personnalisé dérivé de Panel (qui ne plante pas Visual Studio 2008) ou à attacher facilement des déclencheurs, des déclencheurs de données, des actions d'entrée et des actions de sortie à contrôles personnalisés.

Répondre

4

Gosh sacrément, je l'ai compris. J'avais besoin de spécifier le nom de l'assembly avec l'espace de noms; comme si:

<Style 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:MyNamespace;assembly=MyAssembly" 
    TargetType="{x:Type local:CustomControl}"> 
    <Setter Property="HoverOpacity" Value="1.0"/> 
</Style> 

Je donnerai le crédit de la réponse à n'importe qui qui pourrait répondre à mon "P.S." question dans les deux prochains jours. Toute cette situation semble un peu humide, donc je serais vraiment intéressé par les alternatives. Merci