Вы должны использовать converter
(класс, который реализует IValueConverter), потому что у вас есть данные, но вам нужно привязать свойство к другому формату, у вас есть объект, который может иметь значение (отличное от нуля) или быть нулевым, поэтому вам нужно реализовать конвертер так:
public class ObjectToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value != null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Тогда вы можете использовать этот конвертер в вашем коде:
<StackLayout Orientation="Horizontal">
<StackLayout.Resources>
<conv:ObjectToBoolConverter x:Key="Null2bool" />
</StackLayout.Resources>
<Button x:Name="btnBack"
Text="Back"
Command="{Binding BackClickCommand}"/>
<Button x:Name="btnNext"
Text="Next"
IsEnabled="{Binding SelectedCar,Converter={StaticResource Null2bool}}"
Command="{Binding ConfirmClickCommand}">
</Button>
</StackLayout>
Не забудьте импортировать пространство имен вашего конвертера для использования в XAML
В этом примере я использовал conv:
в качестве псевдонима, поэтому вам нужно поместить это в объявление вашей страницы сверху:
xmlns:conv="clr-namespace:Your.Converter.Namespace;assembly=Your.Assembly.Name"
Например, если ваш проект CarsMobile, и у вас есть CarsMobile, CarsMobile.Droid and CarsMobile.iOS,
, и вы поместили свой класс конвертера в папку с именем Converters
( CarsMobile \ Converters \ ObjectToBoolConverter ), чтобы ваши xmlns должны были выглядеть так это:
xmlns:conv="clr-namespace:CarsMobile.Converters;assembly=CarsMobile"
Ссылка https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/converters