在WPF中绑定到当前dataitem的默认索引器的语法?

时间:2010-08-18 17:46:18

标签: wpf data-binding xaml syntax indexer

我有一个Listbox,其itemssource设置为DataRow的ObservableCollection。假设每个DataRow都有5列用于此示例。

在ListBox的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>

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

1 个答案:

答案 0 :(得分:0)

你的语法应该这样做。但是,还必须遵循以下内容:

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