编辑列表视图 Xamarin.Forms 中各个行的文本颜色



所以我有这个代码

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

因此,这将创建一个包含两个项目的列表视图。我想使第一项具有绿色文本,第二项具有红色文本颜色,我将如何以编程方式执行此操作?换句话说,我需要能够在给定索引处更改文本颜色。谢谢你的帮助,本。

实现此目的的最佳方法是使用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}" />

最新更新