Gewusst wie: übergeben Sie einen statischen Wert zu IValueConverter in XAML
Ich würde gerne verwenden Sie statische Texte geholt, die von einem web service in meiner WP7 app. Jeder text hat einen Namen (der indetifier) und eine Content-Eigenschaft.
Zum Beispiel einen text könnte so Aussehen:
Name = "M43";
Content = "This is the text to be shown";
Ich würde dann gerne übergeben Sie den Namen (also die id) der text eines IValueConverter
, das würde dann schauen das der Name und der Rückkehr dem text.
Dachte ich, der Konverter wie folgt Aussehen:
public class StaticTextConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
return App.StaticTexts.Items.SingleOrDefault(t => t.Name.Equals(value)).Content;
}
return null;
}
}
Dann im XAML:
<phone:PhoneApplicationPage.Resources>
<Helpers:StaticTextConverter x:Name="StaticTextConverter" />
</phone:PhoneApplicationPage.Resources>
...
<TextBlock Text="{Binding 'M43', Converter={StaticResource StaticTextConverter}}"/>
Jedoch, dies scheint nicht zu arbeiten, und ich bin nicht sicher, dass ich übergeben Sie den Wert, um den Konverter korrekt.
Hat jemand ein paar Vorschläge?
versuchen
Angst, dass es nicht funktioniert.
{Binding M62.ValueboxConsent, Converter={StaticResource StaticTextConverter}}
Angst, dass es nicht funktioniert.
InformationsquelleAutor Zappel | 2012-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich endlich die Antwort gefunden. Die Antwort war eine Mischung zwischen das von @Shawn Kendrot und eine weitere Frage habe ich hier gestellt: IValueConverter nicht immer aufgerufen wird, in einigen Szenarien
Zusammenfassung der Lösung für die Nutzung der
IValueConverter
habe ich zum binden meiner Kontrolle in folgenden manor:Da die ID des Textes übergeben wird, mit der Konverter-parameter, der Konverter sieht fast das gleiche:
Jedoch, wie sich herausstellt, ist die Bindung und damit der Konverter wird nicht aufgerufen, wenn es nicht nicht haben eine
DataContext
. Um dieses Problem zu lösen, dieDataContext
- Eigenschaft des Steuerelements muss einfach etwas willkürlich:Und dann funktioniert alles wie gewollt!
InformationsquelleAutor Zappel
Wenn Sie einen Wert verwenden möchten-Konverter, müssen Sie die Zeichenfolge übergeben, um die parameter der Wert-Konverter
Xaml:
Konverter:
Es scheint zu funktionieren, nur wenn in einem
<DataTemplate>
. Allerdings brauche ich auch, es selbstständig zu arbeiten. Irgendwelche Vorschläge?Diese Arbeit sollte unabhängig von ein - /DataTemplate. Können Sie eine zip/pastebin Probe?
Deine Antwort ist auf halbem Weg dorthin. Ich habe gerade gebucht eine Antwort, das löst meine Frage. Es ist eine Mischung zwischen deiner Frage und noch eine andere. Danke.
InformationsquelleAutor Shawn Kendrot
Das problem liegt in der Bindung. Überprüfen Sie die
DataContext
, und auf dieses Objekt, es wird versucht zu bewerten, die EigenschaftenM62
undValueboxConsent
auf das Objekt.Möchten Sie vielleicht fügen Sie statische Schlüssel irgendwo in Ihrer Anwendung, wo Sie binden können:
Wo die M62 ist eine statische Klasse, wo sich Ihre Schlüssel befinden sich.. etwa so:
Ja, aber Sie brauchen, um binden auf den korrekten Wert. Und wenn Ihr nicht auf DataContext-Objekt, dann wird Ihr Wert immer unbekannt
Es gibt also keine Möglichkeit, nur pass in einigen static string?
Sie können eine Eigenschaft auf Ihre Konverter und übergeben Sie es zusammen, etwa so:
<Helpers:StaticTextConverter x:Name="StaticTextConverter" MyProperty="Value" />
InformationsquelleAutor Arcturus
Mode=OneWay
oderOneTime
Hinzugefügt werden müssen, dieBinding
wennMyString
ist ein const.InformationsquelleAutor isxaker