Kiedy dodaję pakiet MVVM Light przez NuGet, pojawiają się błędy odnoszące się do linii w pliku App.xaml dodanym podczas instalacji. Te błędy pojawiają się tylko w projektach Windows Phone 8. Dokładnie takie same wiersze w projekcie Windows Phone 7 nie powodują żadnych błędów. MVVM Światło dodaje linie są:Błędy w App.xaml próbującym użyć MVVM Light w Windows Phone 8 project
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
<ResourceDictionary.MergedDictionaries></ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Te linie są umieszczone tuż przed kończącym </Application.Resources> znaczników. Błędy zgłaszane w oknie listy błędów są:
- Każdy słownik musi posiadać odpowiedni klawisz
- Nazwa „ViewModelLocator” nie istnieje w przestrzeni nazw „clr-namespace: sdkVoiceAlarmClockWP8CS.ViewModel”
Wydaje się to mieć sens, ponieważ znacznik ResourceDictionary > ResourceDictionary > nie ma atrybutu klucza. Jednak jeśli spróbuję przenieść ten blok linii poza blok , otrzymuję zupełnie nowy zestaw błędów.
Jeśli chodzi o problem ViewModelLocator obawia się, że dwukrotnie sprawdzane i następujących nazw zostanie dodany do <Application> tag jako atrybut, a to nie jest oznaczony z jakimikolwiek błędami:
xmlns:vm="clr-namespace:sdkVoiceAlarmClockWP8CS.ViewModel" mc:Ignorable="d"
Dlaczego ten sam zestaw linii działa dobrze w projekcie Windows Phone 7 i jak mogę naprawić problemy przestrzeni nazw, które mam w moim projekcie Windows Phone 8?
Tylko w przypadku wynika to z bardziej złożonym problemem tutaj jest cała App.xaml file:
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (c) 2012 Microsoft Corporation. All rights reserved.
Use of this sample source code is subject to the terms of the Microsoft license
agreement under which you licensed this sample source code and is provided AS-IS.
If you did not accept the terms of the license agreement, you are not authorized
to use this sample source code. For the terms of the license, please see the
license agreement between you and Microsoft.
To see all Code Samples for Windows Phone, visit http://go.microsoft.com/fwlink/?LinkID=219604
-->
<Application x:Class="AlarmClockWithVoice.App"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
xmlns:telerikPrimitives="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Primitives"
xmlns:p1="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:sdkVoiceAlarmClockWP8CS.ViewModel" mc:Ignorable="d"
>
<!--Application Resources-->
<Application.Resources>
<Style x:Key="TransitionPageStyle" TargetType="phone:PhoneApplicationPage">
<Setter Property="toolkit:TransitionService.NavigationInTransition">
<Setter.Value>
<toolkit:NavigationInTransition>
<toolkit:NavigationInTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardIn" />
</toolkit:NavigationInTransition.Backward>
<toolkit:NavigationInTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardIn" />
</toolkit:NavigationInTransition.Forward>
</toolkit:NavigationInTransition>
</Setter.Value>
</Setter>
<Setter Property="toolkit:TransitionService.NavigationOutTransition">
<Setter.Value>
<toolkit:NavigationOutTransition>
<toolkit:NavigationOutTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardOut" />
</toolkit:NavigationOutTransition.Backward>
<toolkit:NavigationOutTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardOut" />
</toolkit:NavigationOutTransition.Forward>
</toolkit:NavigationOutTransition>
</Setter.Value>
</Setter>
</Style>
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
<ResourceDictionary.MergedDictionaries></ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
<Application.ApplicationLifetimeObjects>
<!--Required object that handles lifetime events for the application-->
<shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated" />
</Application.ApplicationLifetimeObjects>
</Application>
Wygląda na to, że MVVM Light potrzebuje zaktualizować skrypty NuGet. –
gość, którego kołyszesz :). –