Редактировать цвет текста отдельных строк в ListView Xamarin.Forms - PullRequest
0 голосов
/ 04 июля 2018

Итак, у меня есть этот код

public ListView listView = new ListView();
    List<string> rolesList = new List<string>();
rolesList.Add("Master Admin");
            rolesList.Add("Admin");
listView.ItemsSource = rolesList;
            Content = listView;

Таким образом, это создает представление списка с двумя элементами в нем. Я хотел бы, чтобы у первого элемента был зеленый текст, а у второго красный цвет, как бы я это сделал программно? Другими словами, мне нужно иметь возможность менять цвет текста по заданному индексу. Спасибо за любую помощь, Бен.

1 Ответ

0 голосов
/ 05 июля 2018

Лучший способ добиться этого - использовать DataTemplateSelector. Этот класс позволяет во время выполнения выбирать между двумя шаблонами данных в соответствии с некоторым свойством.

Сначала вам нужно создать свой DataTemplateSelector

public class DummyDataTemplateSelector : DataTemplateSelector
{
  public DataTemplate ValidTemplate { get; set; }
  public DataTemplate InvalidTemplate { get; set; }

  protected override DataTemplate OnSelectTemplate (object item, BindableObject container)
  {
    return ((YourClass)item).YourProperty == Admin ? TemplateColor1 : TemplateColor2;
  }
}

В XAML:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Selector;assembly=Selector" x:Class="Selector.HomePage">
    <ContentPage.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="template1">
                <ViewCell>
                   ...
                </ViewCell>
            </DataTemplate>
            <DataTemplate x:Key="template2">
                <ViewCell>
                   ...
                </ViewCell>
            </DataTemplate>
            <local:DummyTemplateSelector x:Key="dummyDataTemplateSelector"
                ValidTemplate="{StaticResource template1}"
                InvalidTemplate="{StaticResource template2}" />
        </ResourceDictionary>
    </ContentPage.Resources>
  ...
</ContentPage>

Чтобы закончить, добавьте этот селектор шаблонов в список:

<ListView x:Name="listView" ItemTemplate="{StaticResource dummyTemplateSelector}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...