Согласно вашему описанию, если вы хотите, чтобы BoxView отображал выбранный или невыбранный для элемента Collectionview, я предлагаю вам использовать одно свойство для привязки BoxView IsVisible, я сделаю один пример, который вы можете посмотреть:
Модель:
public class Model:ViewModelBase
{
private string _DisplayName;
public string DisplayName
{
get { return _DisplayName; }
set
{
_DisplayName = value;
RaisePropertyChanged("DisplayName");
}
}
private bool _selected;
public bool Selected
{
get { return _selected; }
set
{
_selected = value;
RaisePropertyChanged("Selected");
}
}
}
ViewModel:
public class collectionviewmodel:ViewModelBase
{
public ObservableCollection<Model> Items { get; set; }
public collectionviewmodel()
{
Items = new ObservableCollection<Model>();
Items.Add(new Model() { DisplayName = "AAA", Selected = false });
Items.Add(new Model() { DisplayName = "BBB", Selected = false });
Items.Add(new Model() { DisplayName = "CCC", Selected = false });
Items.Add(new Model() { DisplayName = "DDD", Selected = false });
Items.Add(new Model() { DisplayName = "EEE", Selected = false });
}
}
ContentPage:
<CollectionView
x:Name="list1"
ItemsLayout="VerticalList"
ItemsSource="{Binding Items}"
SelectionChanged="List1_SelectionChanged"
SelectionMode="Single">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal">
<Label
HorizontalOptions="StartAndExpand"
Text="{Binding DisplayName}"
TextColor="Fuchsia" />
<BoxView
HorizontalOptions="End"
IsVisible="{Binding Selected}"
Color="Fuchsia" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
public Page23 ()
{
InitializeComponent ();
this.BindingContext = new collectionviewmodel();
}
Скриншот выглядит так: