2009-06-15 10 views
0

Ich habe ein Cache, der Sammlungen auf der Grundlage einer Zeichenfolge (Kollektionsnamen) übergeben an den Cache (dh ... GlobalCache.Instance [ „Staaten“])Einstellen der ItemsSource einer Combobox von einem INDEXER in XAML?

ich eine Ressource hinzugefügt, wie folgend ruft: < EnumCache: GlobalCache x: Key = „GlobalCache“ />

dann die Kontrolle ....

<dataControls:DataFormComboBoxField x:Name="cmbStates" 
    ItemsSource="GlobalCache.Instance['States']" 
    DisplayMemberPath="EnumerationValueDisplayed" 
    Binding="{Binding fldState, Mode=TwoWay,Converter={StaticResource numConverterUsingEnumerationId},ConverterParameter='States'}" /> 

Alle Ideen, wie ich immer diese durch XAML zu arbeiten, ohne gehen kann die Itemssource über Code-Behind zu setzen ?

Es funktioniert durch Code-behind in Ordnung, aber ich will mehr ...

Antwort

1

Eine Lösung für diese Codierung vereinfachen, die ich gefunden habe, ist noch ein weiterer Konverter zu verwenden und die Parameter auf den Indexer als ConveterParameter passieren, wie folgt:

.... Binding = "{Binding Converter = {Static CacheIndexConverter}, Converter = Staaten}

...

public class CacheIndexConverter : IValueConverter 
{ 
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    string index = parameter as string; 
    return GlobalCache.Instance[index]; 
} 
} 

Hinweis: Das andere Problem, das ich fand, ist, dass ItemsSource nicht durch XAML verfügbar gemacht wird, so dass es keinen Zugriff darauf noch ohne das Schreiben von Extendern oder Unterklassen gibt.

0

Dies sollte funktionieren:

ItemsSource="{Binding Source={StaticResource GlobalCache}, Path=Instance[States]}" 
Verwandte Themen