2010-12-22 15 views
12
<TextBlock Text="{Binding Path=[0]} /> 

veyawpf bağlamak

<TextBlock Text="{Binding Path=[myKey]} /> 

çalışıyor. Ama bir değişken indeks anahtar olarak geçmenin bir yolu var mı?

<TextBlock Text="{Binding Path=[{Binding Column.Index}]} /> 
+0

MSDN linki: http://msdn.microsoft.com/en-us/library/ms742451.aspx – yzorg

+0

bu bağlantıdaki Cevabımı kontrol http://stackoverflow.com/q/ 4385693/217880 – biju

cevap

0

Bu IValueConverter IMultiValueConverter gerektirir.

+1

Gerçekten mi? bunu bir değer dönüştürücüsüyle nasıl yapacağınızı anlatabilir misiniz? – ColinE

0

Hayır, korkarım ki hayır. Bu noktada, verilerinizi daha kolay bir hale getirmek için verilerinizi şekillendiren bir görünüm modeli oluşturmayı düşünmeniz gerekir.

12

bu işlemek için hızlı yolu toplama ve bağlamaları için endeksini kabul eden IMultiValueConverter ile MultiBinding kullanmak genellikle geçerli:

<TextBlock.Text> 
    <MultiBinding Converter="{StaticResource ListIndexToValueConverter}"> 
     <Binding /> <!-- assuming the collection is the DataContext --> 
     <Binding Path="Column.Index"/> 
    </MultiBinding> 
</TextBlock.Text> 

gibi iki değerlerine dayalı arama yapmak sonra yapabilirsiniz dönüştürücü Bu:

public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
{ 
    if (values.Length < 2) 
     return Binding.DoNothing; 

    IList list = values[0] as IList; 
    if (list == null || values[1] == null || !(values[1] is int)) 
     return Binding.DoNothing; 

    return list[(int)values[1]]; 
} 
gelecekteki arama için
İlgili konular