2017-07-27 5 views
0

j'ai donc ce TextBlock:WPF; Conversion d'une chaîne simple dans mon TextBlock texte a échoué et en raison de Vous ne trouvez pas ressource nommée

<TextBlock 
    Name="tbVersion" 
    Text="{Binding Converter={StaticResource TextConverter}}"/> 

Converter:

public class TextConverter : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return "bla bla"; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Et j'eu cette erreur lorsque vous essayez d'exécuter ma demande :

{ ". Impossible de trouver la ressource nommée 'TextConverter' noms de ressources sont sensibles cas "}

Bien qu'il n'y ait pas d'erreur du compilateur du tout et je déclare:

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

Ok donc j'essaie de prendre une autre Converter qui fonctionne d'une autre TextBlobk et encore eu cette erreur qui ne peut pas trouver des ressources bien que cela existent (et fonctionne comme je l'ai mentionné ...) alors peut-être parce que mon TextBlobk est à l'intérieur DataTemplate:

<Controls:MetroWindow.TitleTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock 
       Name="tbVersion" 
       Text="{Binding Converter={StaticResource TextConverter}}"/> 
     </StackPanel> 
    </DataTemplate> 
</Controls:MetroWindow.TitleTemplate> 
+0

Pouvez-vous poster le xaml où déclarer le convertisseur? Est-ce à l'intérieur d'un 'ResourceDictionary' et/ou de la balise' Resource'? –

+0

S'il vous plaît voir ma mise à jour, cela a déclaré à l'intérieur de Window.Resources – user979033

+0

son travail pour moi! quel est l'espace de noms où votre convertisseur est défini – tabby

Répondre

1

tested code Comme vous pouvez le voir sur l'image, j'ai utilisé exactement votre code, et fonctionne très bien.

Vous avez peut-être ajouté le convertisseur à Window.Resources mais vous l'utilisez dans un ResourceDictionary différent?

Si vous voulez les rendre globalement utilisables, vous devez les ajouter à la App.xaml, ou par programme à l'Application.Current.ResourceDictionary

EDIT:

Essayez d'ajouter le convertisseur à la DataTemplate .Resources

+0

j'utilise ce TextBlock dans mon XAML principal et le convertisseur déclare dans le même XAML à l'intérieur indow.Resources – user979033

+0

Ce TextBlock est déclaré à la même XAML à l'intérieur du TitleTemplate mahapps, s'il vous plaît voir ma mise à jour – user979033

+0

OK chapeaux fonctionnant maintenant, merci! – user979033