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

发布于 2024-09-14 18:32:18 字数 1101 浏览 6 评论 0原文

我有一个列表框,其项目源设置为 DataRow 的 ObservableCollection。假设本例中每个 DataRow 有 5 列。

在列表框的 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>

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

I have a Listbox with an itemssource set to an ObservableCollection of DataRow. Let's say each DataRow has 5 columns for this example.

In the DataTemplate of the ListBox I have 5 textblocks (1 for each column). My question is how can I bind to an indexer of the row to get the columns value?

Here is my attempt but nothing displays so I must have the syntax wrong:

<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>

I know that indexers can be used in bindings because I've done something like this already:

<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>

Any help on correcting my syntax would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

帅气尐潴 2024-09-21 18:32:19

你的语法应该可以。但是,还必须执行以下操作:

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

Your syntax should do. However, the following must go also:

<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> 

Check your ItemsSource. Does it really provide an indexer that is of type int? Maybe you have an indexer of another type or even no index. Maybe it's another object than you expect it to be?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文