我有一个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>
任何有关纠正我的语法的帮助都将不胜感激。
答案 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类型的索引器吗?也许你有一个其他类型的索引器,甚至没有索引。也许这是你期望的另一个对象?