2009-06-15 50 views
0

我已经检索基于字符串(集合名称)集合缓存传送到高速缓存(即... GlobalCache.Instance [“美国”])从XAML中的INDEXER设置组合框的ItemsSource?

我添加了一个资源如下: < EnumCache: GlobalCache X:键=“GlobalCache” />

则控制....

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

我如何能去获得这个通过XAML工作,而无需通过代码隐藏设置的ItemsSource任何想法?

它正常工作,通过后面的代码,但我希望能够简化编码更多...

回答

1

一种解决方法我发现是用另一种转换器和参数传递给索引作为ConveterParameter作为如下:

.... 绑定=“{结合转换器= {StaticResource的CacheIndexConverter},ConverterParameter =美国}

...

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

这应该工作:

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