c# - 在 Xamarin 表单的转发器视图中使用项目的索引
问题描述
我有一个转发器视图,它的项目源是一个可观察的视图模型集合,并且有一个数据模板。现在我想使用要在数据模板中使用的特定项目的索引。有什么办法可以做到这一点?注意:转发器视图是 UXDivers.Artina 库的一部分,但它应该公开与列表视图相同的 API,因此适用于列表视图的解决方案可能也适用于转发器。
这是我到目前为止的代码:
xml:
<ctlRep:Repeater
ItemsSource="{ Binding ListItems }"
Padding="10, 10"
Spacing="10"
Orientation="Vertical">
<ctlRep:Repeater.ItemTemplate>
<DataTemplate>
<elements:StructuredVideoDescriptionItemTemplate />
</DataTemplate>
</ctlRep:Repeater.ItemTemplate>
</ctlRep:Repeater>
视图模型:
public class VideoDescriptionStructureListItem : ObservableObject
{
public string Title { get; set; }
public bool IsNumberic { get; set; }
public ObservableCollection<string> ListItems { get; set; }
}
在数据模板中,我想访问 ListItems 项目(它是一个字符串)和特定项目的索引。
解决方案
它可能不是您正在寻找的解决方案,但我最近使用以下策略解决了确切的问题
- 引入一个包含索引属性的中间对象
- 构建
ObservableCollection
这些对象中的一个而不是string
对象并分配正确的索引 - 绑定到字符串和索引而不是直接对象
该类可能如下所示:
class VideoDescriptionViewModel
{
public string Description { get; private set; }
public int Index { get; private set; }
public VideoDescriptionViewModel(string description, int index)
{
Description = description;
Index = index;
}
}
你可以像这样构建实例
var videoDescriptionViewModels = videoDescriptions.Select((description, index) => new VideoDescriptionViewModel(description, index));
并从您的 XAML 绑定它
<elements:StructuredVideoDescriptionItemTemplate Description="{Binding Description}"
Id="{Binding Id}" />
推荐阅读
- facebook - Facebook Graph API -> 用户/事件返回空数组
- php - 我想从我的数据库中从一个 ID 号中选择多个具有相同 photo_id 的图像或变量
- python - 使用 Flask 从静态文件夹提供静态文件
- c# - Revit API 转换“无法通过实例引用访问”
- ios - willDisplay 单元格中的函数也在视图加载时调用
- c# - Bot Framework V4 Azure AD 身份验证返回错误请求
- react-native - 如何在 FlatList extraData 中传递多个对象或值
- appium-android - 如何在appium-android中长按元素?
- javascript - date.split() 不是函数
- import - 字符串和 Ascii 的 Coq 导入问题