20

I've a project made from the "WPF User Control Library" Template in Visual Studio. This project contains one main usercontrol plus additional Windows/Usercontrols.

How can I "hide" these additional Windows/Usercontrols, so that the user can only import the main usercontrol from the assembly (I wanted to put a screen-shot to illustrate my question but unfortunately, my "reputation" is too low!).

Thx All
Fred

Fred
  • 596
  • 1
  • 6
  • 19

3 Answers3

35

Make those controls internal. If you have classic UserControls with XAML and codebehind you will need to add x:ClassModifier="internal" to the root element in the 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>
bitbonk
  • 48,890
  • 37
  • 186
  • 278
  • 1
    This works like a charm!! Thx a lot!. Additionaly, in the .cs file, I had to declare the class like this: internal partial class ... Thx again! – Fred Sep 17 '10 at 11:59
0

I believe that x:ClassModifier="internal" will make the entire user control internal. This may not be desirable.

Instead if you add x:FieldModifier="private" to those controls within the user control that you don't wish to be accessible to the UserControl consumer, the generated C# will have those controls as private. Note the use of lower case which is correct for a C# field modifier.

pbaris
  • 4,525
  • 5
  • 37
  • 61
0

Maybe the usage of attributes will solve your problem. There is one attribute "DesignTimeVisible" inside the ComponentModel namespace. If you put such an attribute right above your class implementation and set it to false, the corresponding control should not be visible in the designers toolbox.