#xamarin.forms #visual-studio-2019
#xamarin.forms #visual-studio-2019
Вопрос:
Мы разрабатываем небольшое приложение, мы создали панель мониторинга с использованием пользовательского рендеринга, но я не могу изменить цвет текста метки. по умолчанию отображается как белый цвет текста метки, цвет фона просмотра списка, он будет поступать через api, так что, если он идет на белом фоне, цвет текста метки не виден. Здесь я прикрепил приведенный ниже код. Дайте мне предложения по решению этой проблемы
Menucontrol пользовательский рендеринг
public static readonly BindableProperty ItemsSourceProperty =
BindableProperty.Create<MenuControl, IEnumerable>(
view => view.ItemsSource,
null,
BindingMode.TwoWay,
null,
propertyChanged: (bindableObject, oldValue, newValue) =>
{
((MenuControl)bindableObject).ItemsSourceChanged(bindableObject, oldValue, newValue);
}
);
public IEnumerable ItemsSource
{
get
{
return (IEnumerable)GetValue(ItemsSourceProperty);
}
set
{
SetValue(ItemsSourceProperty, value);
}
}
Комментарии:
1. Вы могли бы поделиться кодом ListView в xaml. Приведенный выше код не смог помочь нам выяснить причину .
Ответ №1:
Добавьте триггер данных
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout BackgroundColor={Binding BGColor}>
<Label TextColor="White">
<Label.Triggers>
<!--(or Value ="White" depends on binding value Xamarin.Color or string) -->
<DataTrigger TargetType="Label" Binding={Binding BGColor} Value="#FFFFFF">
<Setter Property="TextColor" Value="Red"/>
<!--(or your color) -->
</DataTrigger>
</Label.Triggers>
</Label>
</StackLayout>
<ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Поэтому, когда ваше свойство BGColor (или любое свойство, которое вы привязываете к color) является чем-то, что, по вашему мнению, может конфликтовать (например, с белым) с вашим цветом текста (например, также белым), используйте триггеры данных. Вы можете создать несколько, но если их больше 3 или 4, я бы посоветовал вам использовать конвертеры в этом случае.
Комментарии:
1. Я нашел решение. Я передам цвет через api и привяжу его к текстовому цвету в label. спасибо всем, ребята