绑定到WPF中当前数据项的默认索引器的语法?

问题描述:

我有一个ListSource,并将itemssource设置为DataRow的ObservableCollection。假设每个DataRow在这个例子中有5列。绑定到WPF中当前数据项的默认索引器的语法?

在列表框的DataTemplate中,我有5个文本块(每列1个)。我的问题是我如何绑定到行的索引器来获取列值?

这里是我的尝试,但没有显示,所以我必须有语法错误:

<DataTemplate> 
    <StackPanel> 
     <TextBlock Text="{Binding Path=.[0]}" /> 
     <TextBlock Text="{Binding Path=.[1]}" /> 
     <TextBlock Text="{Binding Path=.[2]}" /> 
     <TextBlock Text="{Binding Path=.[3]}" /> 
     <TextBlock Text="{Binding Path=.[4]}" /> 
    </StackPanel> 
</DataTemplate> 

我知道索引可以在绑定使用,因为我做了这样的事情已经:

<DataTemplate> 
    <StackPanel> 
     <TextBlock Text="{Binding Path=Collection[0].Name}" /> 
     <TextBlock Text="{Binding Path=Collection[1].Name}" /> 
     <TextBlock Text="{Binding Path=Collection[2].Name}" /> 
     <TextBlock Text="{Binding Path=Collection[3].Name}" /> 
     <TextBlock Text="{Binding Path=Collection[4].Name}" /> 
    </StackPanel> 
</DataTemplate> 

任何帮助纠正我的语法将不胜感激。

你的语法应该做。但是,以下必须也:

<DataTemplate> 
    <StackPanel> 
     <TextBlock Text="{Binding Path=[0]} /> 
     <TextBlock Text="{Binding Path=[1]} /> 
     <TextBlock Text="{Binding Path=[2]} /> 
     <TextBlock Text="{Binding Path=[3]} /> 
     <TextBlock Text="{Binding Path=[4]} /> 
    </StackPanel> 
</DataTemplate> 

检查您的ItemsSource。它真的提供了一个int类型的索引器吗?也许你有另一种类型的索引器,甚至没有索引。也许这是另一个超出你期望的对象?