私は選択可能な自動車のマスターリストと、選択された自動車のIDを含む2番目のリストを持っています。Xamarin Pass親BindingContextコンバーターへの値
public class SelectCarsViewModel : BindableBase
{
public IList<Car> Cars = new List<Car>();
public IList<string> SelectedCars = new List<string>();
}
public class Car
{
public string Id {get; set;}
}
選択したすべての車の横にチェックマークを表示する必要があります。私は現在の車のIDを取るコンバータとSelectedCars
リストを開発することでこれを達成しようとしています。 XAMLのSelectedCars
リストを渡すのが難しいです。 SelectCarsPageを渡すことはできますが、そのBindingContextもSelectedCarsプロパティも渡せません。この1
public class CarWithSelectionInfo : Car
public bool Selected {get; set;}
end class
のような車のクラスから継承する新しいクラスを作成し、2つの異なるリストを作成する代わりに、あなたのビューモデルでそれを管理する方法について
<ContentPage x:Name="SelectCarsPage">
<ListView ItemsSource=Cars>
<ListView.ItemTemplate>
<DataTemplate>
<Label Text="{Binding Id, Converter={StaticResource IsCarSelected}, ConverterParameter={Binding Source={x:Reference Name=SelectCarsPage}, Path=SelectedCars}}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
public class IsCarSelected : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//parameter is SelectCarsPage and not the SelectedCars list.
//I'd eventually like to get the following to work
var selectedCars = (List<string>)parameter;
return selectedCars.Contains(value.ToString()) ? "√" : "";
}
}