绑定到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类型的索引器吗?也许你有另一种类型的索引器,甚至没有索引。也许这是另一个超出你期望的对象?