【问题标题】:Default styles with internal custom controls (C# Silverlight)具有内部自定义控件的默认样式 (C# Silverlight)
【发布时间】:2010-09-10 09:40:10
【问题描述】:

我正在尝试创建一个派生自 System.Windows.Controls.Control 且可见性为 internal 的 Silverlight 自定义控件,但在尝试应用默认样式时遇到了问题。这是该类的最简单形式...

internal class MyClass : Control
{
    public MyClass()
    {
        DefaultStyleKey = typeof(MyClass);
    }
}

...这是generic.xaml中默认样式的简单形式...

<Style TargetType="controls:MyClass">
    <Setter Property="Margin" Value="10" />
</Style>

虽然这个控件没有做任何有用的事情,但是可以创建它的一个实例,但前提是它的可见性是public。当类被标记为internal 时,应用程序会引发以下运行时错误:

Error: Unhandled Error in Silverlight Application 
Code: 4004    
Category: ParserError       
Message: No matching constructor found on type 'MyClass'.     
File:      
Line: 11     
Position: 40     

您能否告知我需要做什么才能使内部控制类对 Xaml 解析器可见。

谢谢, 蒂姆

【问题讨论】:

  • +1 因为我收到了同样的错误信息,并且出于我的目的,公开课程就足够了,所以这解决了我的问题。
  • +1 因为我在 Application.Resources 字典中使用的内部类遇到了这个问题

标签: silverlight xamlparseexception


【解决方案1】:

大多数后期绑定场景使用反射并要求方法/成员/属性是公开的。

在这种情况下为什么不能公开?

【讨论】:

  • 它不是一个单一的类 - 它是一个完整的类命名空间,不打算由我的库的最终用户使用。 CLR 有很多内部类,所以我不认为我在尝试做一些不合理的事情,是吗?
猜你喜欢
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多