我正在开发一个 Windows Phone 8 项目,并且我正在做一些我在 WPF 和 WP7 中做过多年的事情,但它似乎在 Windows Phone 8 中不起作用。我创建了另一个项目,并复制了一个这个问题的更简单的形式。我创建了一个新的 WP8 项目,并执行以下操作:
1) 添加一个新类,TestVM.cs
class TestVM : DependencyObject
{
public string TestProperty
{
get { return (string)GetValue(TestPropertyProperty); }
set { SetValue(TestPropertyProperty, value); }
}
// Using a DependencyProperty as the backing store for TestProperty. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TestPropertyProperty =
DependencyProperty.Register("TestProperty", typeof(string), typeof(TestVM), new PropertyMetadata(string.Empty));
}
2) 修改 App.xaml,<Application.Resources />
如下所示:
<!--Application Resources-->
<Application.Resources>
<local:TestVM x:Key="MainVM" />
<local:LocalizedStrings xmlns:local="clr-namespace:VMTest" x:Key="LocalizedStrings"/>
</Application.Resources
3) 添加DataContext="{StaticResource MainVM}"
到MainPage.xaml
.
启动我的应用程序后,出现以下异常:
System.Windows.Markup.XamlParseException: Cannot create instance of type 'VMTest.TestVM' [Line: 11 Position: 29]
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at VMTest.App.InitializeComponent()
at VMTest.App..ctor()
有人知道发生了什么吗?正如我所说,我可以在 WP7 中做同样的事情,而且效果很好。