Лучший способ добиться этого - использовать 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}" />