2012-02-14 4 views
2

Je ne peux pas le faire fonctionner avec IValueConverter pour Windows Phone 7.0. Voici mon code XAML pour l'élément binded:Windows Phone IValueConverter Problème

<TextBlock Text="{Binding Verified, Converter={StaticResource TextConverter}}" HorizontalAlignment="Left" VerticalAlignment="Bottom" FontSize="14" /> 

Voici le behind du fichier XAML.

public class TextConverter : System.Windows.Data.IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if ((bool)value == false) 
     { 
      return ("Verified is False!"); 
     } 
     if ((bool)value == true) 
     { 
      return ("Verified is True!"); 
     } 
     else 
     { 
      return ("Error!"); 
     } 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return null; 
    } 
} 

Il pense que cela est juste, mais il semble que l'application ne peut même pas trouver la classe TextConverter, dois-je déclarer ne quelque part? Quand je cours cette application j'obtiens un Application_UnhandledException. J'espère que quelqu'un peut m'aider, merci.

+0

devrait vous donner la première personne qui a répondu la bonne réponse quand c'est CORRECT – MyKuLLSKI

+1

Eh bien mon acception des réponses est basée sur la réponse qui a été mieux expliquée sur la façon de résoudre le problème et cela peut vous blesser mais je pensais que l'autre était mieux expliqué. – parek

Répondre

3

pour utiliser votre classe en XAML, vous devez l'ajouter à vos ressources. Alors d'abord, déclarer l'espace de noms de votre convertisseur en XAML (où les autres espaces de noms sont déclarés):

xmlns:src="clr-namespace:MyNameSpace" 

ajoutez votre convertisseur à la section des ressources. Le premier élément dans votre page PhoneApplication serait alors:

<Control.Resources> 
    <src:TextConverter x:Key="myConverter"/> 
</Control.Resources> 

Ensuite, vous pouvez accéder à votre classe via sa clé:

... Text="{Binding Verified, Converter={StaticResource myConverter}}" ... 

Nico

+0

... Répondre déjà givin – MyKuLLSKI

4

Vous devez ajouter le convertisseur aux ressources:

Si vous voulez l'utiliser tout au long de votre application mettre dans App.xaml

<Application 
    .... 
    .... 
    xmlns:converter="clr-namespace:NAMESPACE;assembly=ASSEMBLY"> 

<Application.Resources> 
    <converter:TextConverter x:Key="TextConverter"/> 
</Application.Resources> 

Si vous le souhaitez dans une seule fenêtre mettre dans [fenêtre] .xaml

<Window 
    .... 
    .... 
    xmlns:converter="clr-namespace:NAMESPACE;assembly=ASSEMBLY"> 

<Window.Resources> 
    <converter:TextConverter x:Key="TextConverter"/> 
</Window.Resources> 

Assurez-vous de changer NAMESPACE et l'Assemblée à ce que le vôtre est

+0

Où est l'emplacement des ressources? Je ne sais pas où l'insérer, veuillez préciser. – parek

+0

J'ai édité ma réponse – MyKuLLSKI