2014-07-23 9 views
5

Ho sviluppato un'app su Windows Phone 8.1. Molte delle mie pagine hanno il convertitore personalizzato; per esempio:Windows Phone 8.1 - I convertitori non funzionano utilizzando la piattaforma target ARM

using System; 
using System.Globalization; 
using Windows.UI.Xaml.Data; 

namespace XXXXX.Model.Converters 
{ 
    public sealed class DateTimeToStringConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, string language) 
     { 
      var date = (DateTime)value; 

      return date.ToString("g", new CultureInfo("it-IT")); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, string language) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 

In XAML ho:

<Page 
    x:Class="XXXXX.Views.VehiclesView" 
    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:converters="using:XXXXX.Model.Converters" 
    mc:Ignorable="d" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}"> 

    <Page.Resources> 
     <converters:DateTimeToStringConverter x:Key="DateTimeToStringConverter" /> 
     <converters:StringFormatConverter x:Key="StringFormatConverter" /> 
    </Page.Resources> 

e usarlo in questo modo:

<TextBlock Grid.Row="3" Grid.Column="0" Text="{Binding Distance, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0} Km'}"></TextBlock> 

1) Perché il compilatore mi dà questo errore?

The name "DateTimeToStringConverter" does not exist in the namespace using:XXXXX.Model.Converters 

2) Perché funziona se cambio la piattaforma di destinazione in x86?

3) Se volessi lavorare in XAML e non in Code Behind, ci sono alternative al convertitore?

+0

Assicurarsi che il convertitore nello stesso assieme –

+0

provi senza ConverterParameter e senza CultureInfo. anche solo di classe pubblica. E pulisci il progetto e fai la ricostruzione. Anche se in apparenza tutto bene. – IceFog

+0

Puoi provare a ricostruire? –

risposta

4

Provare a spostare i convertitori nella libreria di classi dedicate con la piattaforma di destinazione "AnyCPU" e farne riferimento nel progetto di applicazione.

+0

In questo modo funziona ... Grazie mille Max! – Fra

+0

Puoi spiegare perché ha bisogno di essere in una libreria separata? – sydd

+2

Sinceramente non so perché, ma funziona ... – Max