首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Xamarin窗体中继器视图中项的索引

使用Xamarin窗体中继器视图中项的索引
EN

Stack Overflow用户
提问于 2018-11-02 11:45:16
回答 1查看 499关注 0票数 1

我有一个中继器视图,它的项源是一个可观察的视图模型集合,并且有一个数据模板。现在,我希望使用数据模板中要使用的特定项的索引。有办法做到这一点吗?注意:中继器视图是UXDivers.Artina库的一部分,但是它应该公开与listview相同的API,因此,一个适用于listview的解决方案可能也适用于中继器。

下面是我到目前为止掌握的代码:

Xaml:

代码语言:javascript
运行
复制
<ctlRep:Repeater
        ItemsSource="{ Binding ListItems }"
        Padding="10, 10"
        Spacing="10"
        Orientation="Vertical">
        <ctlRep:Repeater.ItemTemplate>
            <DataTemplate>
                <elements:StructuredVideoDescriptionItemTemplate />
            </DataTemplate>
        </ctlRep:Repeater.ItemTemplate>
</ctlRep:Repeater>

视图模型:

代码语言:javascript
运行
复制
public class VideoDescriptionStructureListItem : ObservableObject
{
    public string Title { get; set; }
    public bool IsNumberic { get; set; }
    public ObservableCollection<string> ListItems { get; set; }
}

在数据模板中,我希望能够访问ListItems项(这是一个字符串)和特定项的索引。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-02 12:41:22

这可能不是你想要的解决方案,但我最近用以下策略解决了确切的问题

  • 引入包含索引属性的中间对象。
  • 构建这些对象的ObservableCollection,而不是string对象,并分配正确的索引。
  • 绑定到字符串和索引,而不是直接对象。

这个班看起来可能是这样的:

代码语言:javascript
运行
复制
class VideoDescriptionViewModel
{
    public string Description { get; private set; }
    public int Index { get; private set; }

    public VideoDescriptionViewModel(string description, int index)
    {
        Description = description;
        Index = index;
    }
}

并且您可以构建如下的实例

代码语言:javascript
运行
复制
var videoDescriptionViewModels = videoDescriptions.Select((description, index) => new VideoDescriptionViewModel(description, index));

并将其与XAML绑定

代码语言:javascript
运行
复制
<elements:StructuredVideoDescriptionItemTemplate Description="{Binding Description}" 
                                                 Id="{Binding Id}" />
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53117992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档