нет, это просто для того, чтобы все работало поэтапно - я хотел знать, что сначала можно связать цвет, а потом я собирался написать метод, который будет чередовать цвета в каждой строке
Если вы хотите иметь тот же цвет для строки ListView, вы можете создать цветовое свойство BoxViewStyle в ViewModel, поскольку ottermatic сказал, что свойство BoxViewStyle находится в ViewModel, поэтому вы не можете связать его для Datetemplate ListView, поэтому вы называете свой просмотр списка какво-первых, найдите список BindingContext.BoxViewStyle.
<ListView x:Name="list" ItemsSource="{Binding games}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding GAME_NAME}" />
<BoxView BackgroundColor="{Binding BindingContext.BoxViewStyle, Source={x:Reference list}}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Если вы хотите чередовать цвета в каждой строке ListView, я предлагаю вам создать BoxViewStyle в модели в соответствии с индексом строки ListView для изменения цвета.
<ListView x:Name="list" ItemsSource="{Binding games}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding GAME_NAME}" />
<BoxView BackgroundColor="{Binding BoxViewStyle}" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Model.cs:
public class Game
{
public int Index { get; set; }
public string GAME_NAME { get; set; }
public Color BoxViewStyle
{
get
{
if (Index % 2 == 0)
{
return Color.Red;
}
else
{
return Color.Blue;
}
}
}
}
ViewModel.cs:
public class GameViewModel
{
public ObservableCollection<Game> games { get; set; }
public GameViewModel()
{
games = new ObservableCollection<Game>()
{
new Game(){Index=0,GAME_NAME="game 1"},
new Game(){Index=1,GAME_NAME="game 2"},
new Game(){Index=2,GAME_NAME="game 3"},
new Game(){Index=3,GAME_NAME="game 4"},
new Game(){Index=4,GAME_NAME="game 5"}
};
}
}
Если мой ответ решил вашу проблему, не забудьте пометить мой ответ как ответ, спасибо.