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

WPF綁定到索引

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

工作正常。但是有沒有辦法將一個變量作爲索引鍵傳遞?

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

MSDN鏈接,未來搜索:http://msdn.microsoft.com/en-us/library/ms742451.aspx – yzorg 2011-09-12 15:03:19

+0

檢查我在這個環節答案http://stackoverflow.com/q/ 4385693/217880 – biju 2010-12-23 16:55:17

回答

0

這要求 IValueConverter IMultiValueConverter

0

不,恐怕不是。在這一點上,你應該考慮創建一個視圖模型來改變數據的形狀,使其更容易綁定到它。

12

處理最快的方法通常是使用一個MultiBinding與接受的收集和其綁定指數的IMultiValueConverter:

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

轉換器則可以做到基於像兩個值查找這樣的:

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]]; 
}