【问题标题】:Hide control within a WPF User Control Library在 WPF 用户控件库中隐藏控件
【发布时间】:2010-09-15 11:50:33
【问题描述】:

我有一个由 Visual Studio 中的“WPF 用户控件库”模板制作的项目。 该项目包含一个主用户控件和附加的 Windows/用户控件。

我如何“隐藏”这些额外的 Windows/用户控件,以便用户只能从程序集中导入主用户控件(我想放一个屏幕截图来说明我的问题,但不幸的是,我的“声誉”太低!)。

谢谢所有
弗雷德

【问题讨论】:

  • 我认为@rdkleine 的意思是internal 而不是protected
  • 确实如此。一定是那些让我头疼的 VB 项目 ;)

标签: wpf user-controls


【解决方案1】:

将这些控件设置为内​​部控件。如果您有带有 XAML 和代码隐藏的经典用户控件,则需要将 x:ClassModifier="internal" 添加到 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>

【讨论】:

  • 这就像一个魅力!多谢!。另外,在 .cs 文件中,我必须像这样声明类:internal partial class ...再次感谢!
【解决方案2】:

也许使用属性可以解决您的问题。在 ComponentModel 命名空间中有一个属性“DesignTimeVisible”。如果您将此类属性放在类实现的正上方并将其设置为 false,则相应的控件不应在设计器工具箱中可见。

【讨论】:

    【解决方案3】:

    我相信x:ClassModifier="internal" 将使整个用户控件内部化。这可能是不可取的。

    相反,如果您将x:FieldModifier="private" 添加到用户控件中您不希望UserControl 使用者可以访问的那些控件,则生成的C# 会将这些控件设为私有。请注意使用小写字母,这对于 C# 字段修饰符是正确的。

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多