我正在使用Visual Studio Express 2012 for Windows Phone制作Windows Phone 7.1应用程序。
我将此命名空间添加到MainPage.xaml:
xmlns:myNameSpace="clr-namespace:MyApp"
而且:
<Grid.Resources>
<myNameSpace:MyClass x:Key="referenceToMyClass" />
</Grid.Resources>
在同一个文件中使用如下:
<ListBox Name="MyListBox"
Height="{Binding ElementName=ContentPanel, Path=Height}"
Width="{Binding ElementName=ContentPanel, Path=Width}"
ItemsSource="{StaticResource referenceToMyClass}"
DisplayMemberPath="MyAttribute" />
MyClass看起来像这样:
namespace MyApp
{
class MyClass : ObservableCollection<AnotherClass>
{
public MyClass()
{
Class temp = new AnotherClass("Example attribute");
Add(temp);
}
public void AddAnotherClass(AnotherClass anotherClass)
{
Add(anotherClass);
}
}
}
因此,当我尝试在手机上调试时,我收到以下错误:
System.Windows.dll中出现'System.Windows.Markup.XamlParseException'类型的第一次机会异常 附加信息:在“MyApp.MyClass”类型上找不到匹配的构造函数。
答案 0 :(得分:17)
这是因为你的班级不公开。应该是
public class MyClass : ObservableCollection<AnotherClass>
XAML无法绑定到非公共对象/类/属性
答案 1 :(得分:2)
当您的代码在xaml对象的构造函数中引发MissingMethodException
时,您也可能会遇到此异常:
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
类的构造函数。调查抛出异常的“内部异常”揭示了失败的真正原因。
答案 2 :(得分:0)
我正在添加这个答案,希望它能为那些遇到同样问题的人提供一些帮助:
TeamCity未能构建多个依赖SilverLight项目,报告resgen.exe错误以及无处可见的普遍存在的错误代码。
我将SilverLight项目从v3升级到v5,这允许TeamCity构建,但其中一个SilverLight屏幕未显示任何内容,没有使用FireFox报告错误。
通过使用Visual Studio 2010和IE进行调试,我得到了与OP相同的错误信息,并且在调用InitializeComponent()时发生了变化,但区别在于该类已经公开了?!
问题在于升级的项目遇到了resource.resx文件的问题,在完全从SilverLight项目中删除它们后,整个过程按预期工作。