如何在MAUI ListView或CollectionView中显示行号?

问题描述 投票:0回答:1
c# .net xaml mvvm maui
1个回答
0
投票

常见的方法是使用 ItemToIndexConverter,但是,这有以下缺陷:

  • 对于大型列表效率不高,O(N^2)
  • 您的用例要求索引从 1 开始(通常是 0)

无论如何,为了让您开始,您可以在 XAML 中编写以下内容:

<Label
    FontAttributes="Bold"
    Text="{MultiBinding {Binding Ingredients, Source={Reference mainPage}},
                        {Binding .},
                        Converter={local:IndexToItemConverter}}"
    VerticalOptions="Center" />

然后,您可以按如下方式实现 IndexToItemConverter:

public class IndexToItemConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        => values[0] is ObservableCollection<string> c && values[1] is string s ? c.IndexOf(s) : -1;
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        => throw new NotImplementedException();
}
© www.soinside.com 2019 - 2024. All rights reserved.