2010-09-15 13 views
9

Tengo un proyecto creado a partir de la plantilla "Biblioteca de control de usuario de WPF" en Visual Studio. Este proyecto contiene un control de usuario principal más controles de Windows/Usuario adicionales.Ocultar control dentro de una Biblioteca de control de usuario de WPF

¿Cómo puedo "ocultar" estos controles adicionales de Windows/Usuario, para que el usuario solo pueda importar el control de usuario principal del ensamblaje (quería poner una captura de pantalla para ilustrar mi pregunta, pero desafortunadamente mi "reputación" es ¡demasiado baja!).

Thx Todo
Fred

+0

¿Intentó hacerlos protegidos? –

+1

Creo que @rdkleine significa 'interno' en lugar de' protegido'. –

+0

De hecho. Deben ser esos proyectos de VB atornillando con mi cabeza;) –

Respuesta

23

Haga que los controles sean internos. Si tiene UserControls clásicos con XAML y código subyacente que tendrá que añadir x:ClassModifier="internal" al elemento raíz en el 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

¡Esto funciona como un encanto! ¡Muchas gracias!. Además, en el archivo .cs, tuve que declarar la clase como esta: clase parcial interna ... Thx otra vez! – Fred

0

Tal vez el uso de atributos va a resolver su problema. Hay un atributo "DesignTimeVisible" dentro del espacio de nombres ComponentModel. Si coloca dicho atributo justo encima de la implementación de su clase y lo establece en falso, el control correspondiente no debería estar visible en la caja de herramientas de los diseñadores.

0

creo que x:ClassModifier="internal" hará que todo el control de usuario interna. Esto puede no ser deseable.

En su lugar, si agrega x:FieldModifier="private" a los controles dentro del control de usuario que no desea que sean accesibles para el consumidor UserControl, la C# generada tendrá esos controles como privados. Tenga en cuenta el uso de minúsculas que es correcto para un modificador de campo C#.

Cuestiones relacionadas