2016-05-15 8 views
0

Ich habe eine einfache XAML:CheckBox Element Ausgabe Bindung in WP8.1

 <CheckBox x:Name="chkShowGrid" IsThreeState="False" IsChecked="False">Show content</CheckBox> 

     <Grid Visibility="{Binding IsChecked, ElementName=chkShowGrid}"> 
     <TextBlock>Some content goes here</TextBlock> 
     </Grid> 

Diese XAML funktioniert gut in WinRT Windows-8.1-Anwendung. Wenn ich es in WP8.1-Anwendung versuche, funktioniert es im Designer (zeigt oder verbirgt das Raster abhängig vom Wert der Checkbox), aber nicht auf dem Telefon. Warum?

UPDATE: I Universal-8.1 App haben und wenn die Verwendung Konverter zeigt mir dann Ausnahme:

Fehler CS0012: Der Typ 'Typ' wird in einer Baugruppe definiert, die nicht verwiesen wird. Sie müssen einen Verweis auf Assembly hinzufügen 'System.Runtime, Version = 4.0.10.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'

Converter Code:

 class BoolConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, string language) 
     { 
      if (value == null) return false; 

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

In XAML

<Page.Resources> 
    <local:BoolConverter x:Name="ThatsMyConverter"/> 
</Page.Resources> 

.........

<Grid Visibility="{Binding IsChecked, ElementName=chkShowSettings,Converter={StaticResource ThatsMyConverter}}"> 
+1

Versuchen Sie, die IsChecked-Eigenschaft über einen Konverter an die Sichtbarkeit zu binden. Das könnte das Problem sein! – WPMed

+0

Konverter zeigt die Ausnahme an –

+0

Referenzieren Sie Ihren Konvertierungsnamespace am Anfang Ihrer XAML-Datei und fügen Sie den Konverter als statische Ressource hinzu? Das sollte getan werden, damit es funktioniert – WPMed

Antwort

1

Ihr Konverter gibt einen booleschen Wert zurück und Sie versuchen, der Sichtbarkeit einen bool zuzuweisen, der nur sichtbare oder kollabierte Werte annehmen kann. Versuchen Sie, die Sichtbarkeit von Ihrem Converter anstelle von bool zurückzugeben. Das sollte funktionieren. Zum Beispiel in Ihrem Konverter:

if (value == null) return Visibility.Collapses; 
    var val = (value as bool); 
    if (val) 
     return Visibility.Visible; 
    else 
     return Visibility.Collapsed; 
+0

Es funktioniert dank! Einfache Lösung, aber ich war verwirrt, warum in WinRT und im Designer alles ohne Konvertierung funktioniert –