【发布时间】:2020-03-22 19:28:28
【问题描述】:
public List<Scoreboard> RawScoreboard { get; set; }
public ObservableCollection<Scoreboard> ScoreboardList { get; set; }
<CollectionView ItemsSource="{Binding ScoreboardList}"
EmptyView="Sorry, no scores yet! Play a game and view your results here!">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="models:Scoreboard">
<Grid BackgroundColor="{StaticResource BasePurple}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Text="{Binding Score}" Style="{StaticResource LabelStyle}" />
<Label Grid.Column="1" Text="{Binding UserName}" Style="{StaticResource LabelStyle}" />
<Label Grid.Column="2" Text="{Binding CountryName}" Style="{StaticResource LabelStyle}" />
<Label Grid.Column="3" Style="{StaticResource LabelStyle}" >
<Label.FormattedText>
<FormattedString>
<Span Text="{Binding Score}"/>
<Span Text="/10"/>
</FormattedString>
</Label.FormattedText>
</Label>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
所以我想要做的是更改 Rank 列以将其绑定为列表中自己的索引。即 1、2、3、4、5、6。这里只是一个编号列表。我认为这可能在 linq 中可以做到吗?
public class Scoreboard
{
public int UserId { get; set; }
public int CountryId { get; set; }
public string CountryName { get; set; }
public string UserName { get; set; }
public int Score { get; set; }
}
public async Task OnAppearing()
{
await GetScores();
SortScoreboard();
foreach (var scoreboard in RawScoreboard)
{
ScoreboardList.Add(scoreboard);
}
}
我已经添加了所有相关的代码,所以基本上。 “我如何将一个元素绑定到它自己的集合视图中的索引?”
【问题讨论】:
-
AFAIK 这样做的唯一方法是向记分卡添加索引属性,或者创建自己的集合类型来维护它自己的索引属性
-
这听起来真的很令人费解,因为乍一看似乎很简单。 :(
标签: c# xaml xamarin xamarin.forms