我有一个定义用户控件X的程序集。在该程序集中,X由子控件Y和Z组成。我希望Y和Z标记为内部,这样我的程序集的用户只能使用X。
我尝试通过更改xaml和codebehind类中的默认公共可访问性来实现这一点,并编写:
<UserControl
x:Class="MyNameSpace.Y"
x:ClassModifier="internal"
...
和
namespace MyNameSpace
{
internal partial class Y : UserControl
{
...
当我这样做时,一切都会编译得很好,但是在运行时初始化顶级用户控件x时,我会得到可怕的错误。
AG_E_PARSER_BAD_TYPE
在x.xaml中我说
<my:X Name="TheX"></my:X>
当我编译和编辑的时候,我也
有时
(但并非总是如此)请在XAML编辑器中查看标记为错误的此行,并显示一条关于x的消息。
将可访问性更改回“public”将立即解决该问题。
因此,通过将内部子控件标记为内部,似乎无法从外部隐藏它们,因为这也将它们从XAML机制的某些部分隐藏。这是正确的吗?有什么办法可以解决这个问题,把我不想分享的东西藏起来吗?