0

我有一个列表框,其中 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>

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

4

1 回答 1

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 类型的索引器吗?也许您有另一种类型的索引器,甚至没有索引。也许它是另一个超出您预期的对象?

于 2010-08-18T19:10:09.653 回答