2010-06-02 5 views
3

Je ne sais pas utiliser le bloc de texte usercontrol, mais j'envoie de la valeur à textblock d'une autre forme, quand je transmets une valeur affichée dans textblock, mais j'ai besoin de convertir le nombre en texte. donc j'ai utilisé le convertisseur dans le bloc de texte. mais ca marche pasWPF Textblock Convert Édition

<TextBlock Height="21" Name="txtStatus" Width="65" Background="Bisque" TextAlignment="Center" Text="{Binding Path=hM1,Converter={StaticResource TextConvert},Mode=OneWay}"/> 

classe convertisseur

class TextConvert : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 

     if (value != null) 
     { 
      if (value.ToString() == "1") 
      { 
       return value = "Good"; 

      } 
      if (value.ToString() == "0") 
      { 
       return value = "NIL"; 

      } 

     } 
     return value = ""; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return (string)value; 
    } 

} 

est-il juste? Qu'est-ce qui ne va pas?

+0

sont u une sortie obtiennent? –

+0

oui, je voudrais connaître la sortie aussi .... il semble juste. – VoodooChild

+0

oui je reçois un nombre dans le bloc de texte, les valeurs sont 0 et 1, si 0 va lier du texte comme pour un texte, je reçois la valeur numebr dans textblock, mais le convertisseur ne fonctionne pas pour remplacer le texte –

Répondre

3

ok je pense que je sais ce que le problème est - nous allons voir si je peux le définir pour vous :)

dans votre fichier XAML où vous souhaitez utiliser TextConvert, définir des ressources pour elle (à moins que vous faites déjà, alors je n'ai pas la moindre idée pourquoi cela ne fonctionne pas)

<Grid.Resources> 
     <Shared:TextConvert x:Key="TextConvertKey" /> 
    </Grid.Resources> 

partagé étant les xmlns ofcourse.

Ensuite, dans la zone de texte utiliser comme:

Text="{Binding Path=hM1,Converter={StaticResource TextConvertKey},Mode=OneWay}"/> 

EDIT:

Si vous définissez un point d'arrêt dans la classe de conversion, ne le débogueur aller là-bas ?????

EDIT 2:

me sers comme ce voodoo

locale: HealthTextConvert x: Key = "TextConvert"

Ceci est absolument faux. Comment pouvez-vous l'appeler HealthTextConvert lorsque le nom du convertisseur est TextConvert ???

il devrait être

local:TextConvert x:Key="whateverKeyNameYouWant" 

et

dans la zone de texte est devrait être

Text="{Binding Path=hM1,Converter={StaticResource whateverKeyNameYouWant},Mode=OneWay}" 
+0

déjà ajouté à mes ressources de grille .. mais sa classe de conversion stil ne fonctionne pas –

+0

laissez-moi voir à quoi ressemble hM1? – VoodooChild

+0

hM1 est une variable, elle peut être 0 ou 1 –

0

Essayez en supprimant "chemin" dans la ligne ci-dessous

Text = "{Liaison Chemin = hM1, Convertisseur = {StaticResource TextConvert}, Mode = OneWay} ".

Parfois, cela fonctionne sans "chemin" :).

Regardez également dans la fenêtre de sortie (Alt + Cntl + O) ... pour voir où se situe le problème.

+0

mais ça ne fonctionne pas anish ..? –

+0

fenêtre de sortie ne montre aucune exception. –

+0

Deep .. avez-vous obtenu la réponse? – Relativity

1

Je vois immédiatement un problème avec la définition de votre convertisseur.

class TextConvert : IValueConverter 
{ 
    ... 

Devrait être déclaré public pour pouvoir l'utiliser comme ressource.

public class TextConvert : IValueConverter 
{ 
    ... 

Aussi, ce n'est pas une bonne chose de le faire ...

return value = "Good"; 

... 

return value = "NIL"; 

Il devrait juste être (même si ce ne sera pas si vous le laissez, juste une mauvaise programmation = P):

return "Good"; 

... 

return "Nill"; 
Questions connexes