9

I'm making Windows Phone 7.1 app with Visual Studio Express 2012 for Windows Phone.

I added this namespace to MainPage.xaml:

xmlns:myNameSpace="clr-namespace:MyApp"

And this:

<Grid.Resources>
        <myNameSpace:MyClass x:Key="referenceToMyClass" />
</Grid.Resources>

And used like this in same file:

<ListBox Name="MyListBox"
         Height="{Binding ElementName=ContentPanel, Path=Height}"
         Width="{Binding ElementName=ContentPanel, Path=Width}"
         ItemsSource="{StaticResource referenceToMyClass}"
         DisplayMemberPath="MyAttribute" />

MyClass looks like this:

namespace MyApp
{
    class MyClass : ObservableCollection<AnotherClass>
    {
        public MyClass()
        {
            Class temp = new AnotherClass("Example attribute");
            Add(temp);
        }

        public void AddAnotherClass(AnotherClass anotherClass)
        {
            Add(anotherClass);
        }
    }
}

So when I try to Debug it on my cellphone I get the following error:

A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in System.Windows.dll Additional information: No matching constructor found on type 'MyApp.MyClass'.

4

3 回答 3

17

这是因为您的课程不公开。应该

public class MyClass : ObservableCollection<AnotherClass>

XAML 无法绑定到非公共对象/类/属性

于 2013-01-27T20:54:48.073 回答
2

当您的代码MissingMethodException在 xaml 对象的构造函数中引发 a 时,您也可能会遇到此异常:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var t = Activator.CreateInstance(typeof(T), typeof(int)); // Missing constructor
        // or:
        //this.GetType().InvokeMember("NonExistingMember", BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, this, new object[0]);
    }
}

public class T
{}

xaml 解析器错误地报告MainWindow找不到类的构造函数。查看抛出异常的“内部异常”揭示了失败的真正原因。

于 2013-09-14T06:18:27.217 回答
0

我正在添加这个答案,希望它能为那些遇到与我相同的特定问题的人提供一些帮助:

TeamCity 未能构建多个报告 resgen.exe 错误的依赖 SilverLight 项目,并且普遍存在的通用错误代码根本无法提供任何洞察力。

我将 SilverLight 项目从 v3 升级到允许 TeamCity 构建的 v5,但是其中一个 SilverLight 屏幕无法显示任何内容,使用 FireFox 没有报告错误。

通过使用 Visual Studio 2010 和 IE 进行调试,我得到了与 OP 相同的错误消息,但它在调用 InitializeComponent() 时发生了变化,但不同之处在于该类已经公开?!

问题是升级后的项目在 resource.resx 文件方面存在问题,在将它们完全从 SilverLight 项目中删除后,整个事情都按预期工作。

于 2015-02-24T16:16:29.230 回答