Установка ItemsSource комбинированного списка из INDEXER в XAML? - PullRequest
0 голосов
/ 15 июня 2009

У меня есть кэш, который извлекает коллекции на основе строки (имя коллекции), переданной в кэш (т. Е. ... GlobalCache.Instance ["States"])

Я добавил ресурс следующим образом:

тогда контроль ....

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

Любые идеи о том, как я могу заставить это работать через XAML без необходимости устанавливать ItemsSource через codebehind?

Хорошо работает через код, но я хочу упростить кодирование подробнее ...

Ответы [ 2 ]

1 голос
/ 23 июня 2009

Я нашел одно решение этой проблемы - использовать еще один преобразователь и передать параметр в индексатор в виде ConveterParameter следующим образом:

.... Binding = "{Binding Converter = {StaticResource CacheIndexConverter}, ConverterParameter = States}

...

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

ПРИМЕЧАНИЕ. Другая проблема, которую я обнаружил, заключается в том, что ItemsSource не предоставляется через XAML, поэтому к нему еще нет доступа без записи расширений или подклассов.

0 голосов
/ 21 декабря 2009

Это должно работать:

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