2010-09-15 3 views
9

J'ai un projet réalisé à partir du modèle « WPF Control Library utilisateur » dans Visual Studio. Ce projet contient un UserControl principal et de Windows/usercontrols supplémentaires. Comment puis-je "masquer" ces contrôles Windows/Userc supplémentaires, de sorte que l'utilisateur puisse uniquement importer le contrôle utilisateur principal de l'assemblage (je voulais mettre une capture d'écran pour illustrer ma question mais malheureusement, ma "réputation" est trop bas!).contrôle Masquer dans une bibliothèque de l'utilisateur WPF

Thx Tous
Fred

+0

essayé de les faire Protégée? –

+1

Je pense que @rdkleine signifiait 'internal' plutôt que' protected'. –

+0

En effet. Doit être ces projets VB vissant avec ma tête;) –

Répondre

23

Faire ces contrôles internes. Si vous avez UserControls classique avec XAML et CodeBehind vous devrez ajouter x:ClassModifier="internal" à l'élément racine dans le XAML:

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="MyNameSpace.MyUserControl" 
    x:ClassModifier="internal"> 
     <!-- bla --> 
</UserControl> 
+1

Cela fonctionne comme un charme !! Merci beaucoup!. Additionnellement, dans le fichier .cs, je devais déclarer la classe comme ceci: classe partielle interne ... Thx à nouveau! – Fred

0

Peut-être que l'utilisation des attributs résoudra votre problème. Il y a un attribut "DesignTimeVisible" dans l'espace de noms ComponentModel. Si vous placez un tel attribut juste au-dessus de votre implémentation de classe et que vous le définissez sur false, le contrôle correspondant ne doit pas être visible dans la boîte à outils des concepteurs.

0

Je crois que x:ClassModifier="internal" fera tout le contrôle utilisateur interne. Ce n'est peut-être pas souhaitable. À la place, si vous ajoutez x:FieldModifier="private" aux contrôles du contrôle utilisateur que vous ne souhaitez pas rendre accessibles au consommateur UserControl, les contrôles C# générés seront privés. Notez l'utilisation de minuscules qui est correcte pour un modificateur de champ C#.