我有一个转发器视图,该视图的项源是可观察到的视图模型集合,并且具有数据模板。现在,我想使用要在数据模板中使用的特定项目的索引。有什么办法可以做到这一点? 注意:转发器视图是UXDivers.Artina库的一部分,但它应公开与列表视图相同的API,因此适用于列表视图的解决方案可能也适用于转发器。
这是我到目前为止的代码:
Xaml:
<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项目(它是一个字符串)和特定项目的索引。
答案 0 :(得分:2)
这可能不是您要寻找的解决方案,但是我最近通过以下策略解决了确切的问题
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}" />