Код ниже должен дать вам довольно хорошее представление о том, с чем я работаю. Каждый Widget
отображается в ListView
. Но некоторые из виджетов "В огне", и я хотел бы отобразить их StreetName
красным. Проблема в том, что запись о том, какие виджеты горят, хранится в WidgetsViewModel
.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SickProgram.Views.Pages.WidgetsPage"
xmlns:ViewModels="clr-namespace:SickProgram.ViewModels">
<ContentPage.BindingContext>
<ViewModels:WidgetsViewModel />
</ContentPage.BindingContext>
<StackLayout>
<ListView ItemsSource="{Binding Widgets}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Label Text="{Binding StreetName}"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
В идеальном мире это будет выглядеть примерно так:
<!- OnFire is a method in the WidgetsViewModel that takes in a widget Id and returns a color. ->
<Label Text="{Binding StreetName}" Color={Binding BindingContext.Parent.OnFire(BindingContext.Id)}/>
Кроме того, я не думаю, что использование выбранного элемента сделает работу. Отображение включенных виджетов должно быть независимым от отображения выбранного элемента.