Я работаю над проектом Windows Phone 8, и я делаю то, что я делал в WPF и WP7 целую вечность, и, похоже, он не работает в Windows Phone 8. Я создал еще один проект и воспроизвел более простую форму этой проблемы. Я создаю новый проект WP8 и выполните следующие действия:Windows Phone 8 Viewmodel Binding
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, и все будет хорошо.
Можете ли вы добавить полное внутреннее исключение – Zaki
Является ли это 'TestVM', который должен быть' ViewModel'? то почему это «DependencyObject»? –
Я бы очень рекомендовал использовать MVVM Light, это упрощает такие вещи. – robertk