2016-05-10 14 views
0

Ich verwende BooleanToVisibilityConvertor zum Manipulieren der Sichtbarkeit von TextBlock in einem ListBox DataTemplate.Kann ich mehr als einen Konverter deklarieren? WP8

Hier ist meine XAML-Code:

<phone:PhoneApplicationPage.Resources> 
    <Converters:BooleanToVisibilityConvertor x:Key="booleanToVisibilityConvertor"/> 
    </phone:PhoneApplicationPage.Resources> 

    <TextBlock Grid.Row="2" HorizontalAlignment="Right" Padding="0,0,7,0" Visibility="{Binding AverageConsumption, Converter={StaticResource booleanToVisibilityConvertor}}"> 
    <Run Text="{Binding AverageConsumption}"/> 
    <Run Text="l./100 km."/> 
    </TextBlock> 

Und der Code hinter:

public class BooleanToVisibilityConvertor : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     { 
      if (value != null) 
      { 
       if (!string.IsNullOrEmpty(value.ToString())) 
       { 
        return Visibility.Visible; 
       } 

      } 
      return Visibility.Collapsed; 
     } 
    } 

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

Dies funktioniert korrekt, aber ich brauche noch eine (umgekehrt) Wandler für einen anderen Textblock auf derselben platziert Position (Grid.Row = "2" HorizontalAlignment = "Right") mit statischem Text = "Partial Tanken", also wenn {Binding AverageConsumption} nicht null oder leer ist, wird zuerst TextBlock ungültig und der zweite wird kollabiert und umgekehrt. Etwas wie folgt aus:

class BooleanToVisibilityConvertorReversed : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     { 
      if (value != null) 
      { 
       if (!string.IsNullOrEmpty(value.ToString())) 
       { 
        return Visibility.Collapsed; 
       } 
      } 
      return Visibility.Visible; 
     } 
    } 

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

Ich habe versucht, einen anderen Konverter in XAML zu erklären:

<phone:PhoneApplicationPage.Resources> 
    <Converters:BooleanToVisibilityConvertor x:Key="booleanToVisibilityConvertor"/> 
    <Converters:BooleanToVisibilityConvertorReversed x:Key="booleanToVisibilityConvertorReversed"/> 
    </phone:PhoneApplicationPage.Resources> 

bekam aber eine Ausnahme auf InitializeComponent(): 'Eine erste Chance Ausnahme des Typs' System.Windows. Markup.XamlParseException 'in System.Windows.ni.dll aufgetreten' Wie kann ich das lösen?

+0

Warum denken Sie, dass diese Linie ein Täter ist? – ixSci

+0

Ich denke, der Grund ist hier: und es kann einfach nicht initialisieren die Seite. Ich habe den anderen Konverter entfernt und habe nur mit diesem versucht, habe aber immer noch die selbe Ausnahme. –

+0

Und wenn Sie es entfernen, wird der Fehler weg sein? Vielleicht ist ein verstecktes Symbol da? Versuchen Sie es mit der IntelliSense-Hilfe neu einzugeben – ixSci

Antwort

0

Scheint wie ich habe gefunden, was ist dein Problem. Ihre BooleanToVisibilityConvertorReversed Klasse ist nicht öffentlich. Mach es öffentlich und deine Probleme sollten weg sein.

+0

Wir haben fast unsere Antworten haha ​​gekreuzt. Ich habe das gleiche gefunden und es funktioniert jetzt. Trotzdem danke! Du warst zuerst, also werde ich dir antworten :) –