【问题标题】:can a UserControl be internal?UserControl 可以是内部的吗?
【发布时间】:2009-11-05 07:20:47
【问题描述】:

我有一个定义了 UserControl X 的程序集。在该程序集中,X 由子控件 Y 和 Z 组成。我希望将 Y 和 Z 标记为内部,以便只有 X 对我的程序集的用户可用。

我尝试通过更改 XAML 和代码隐藏类中的默认公共可访问性来实现这一点,写作:

<UserControl 
    x:Class="MyNameSpace.Y"
    x:ClassModifier="internal"
    ...

namespace MyNameSpace
{
    internal partial class Y : UserControl
    {
    ...

当我这样做时,一切都编译得很好,但是在运行时初始化顶级用户控件 X 时,我在 X.xaml 中我说的那个点收到了可怕的错误AG_E_PARSER_BAD_TYPE

<my:X Name="TheX"></my:X>

在我编译和编辑时,我也有时(但并非总是)在 XAML 编辑器中看到这一行标记为错误,并显示有关 X 未知的消息。

将可访问性改回“公共”可立即解决问题。

因此,我的内部子控件似乎无法通过将它们标记为内部来从外部隐藏,因为这也将它们从 XAML 机制的某些部分隐藏起来。这个对吗?有什么办法可以解决它并隐藏我实际上不想分享的部分?

【问题讨论】:

    标签: silverlight xaml silverlight-3.0


    【解决方案1】:

    是的,您需要您的控件可供访问才能使用。如果您不希望它们可共享,您可以做的一件事是检查父类型以确保它是您编码的父类型。然后,如果有人将您的控件粘贴在他们的应用程序中,而没有将它放在您的主机控件中,您可以抛出异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 2019-10-25
      • 2016-12-28
      • 1970-01-01
      • 2011-10-08
      • 2018-03-30
      相关资源
      最近更新 更多