We have two Pickers on a Page:
<Picker
AutomationId="IdOwnerOfVehiclePicker"
Margin="0,0,0,10"
x:Name="OwnerOfVehiclePicker"
Title="Please select"
ItemsSource="{Binding OwnerOfVehicleOptions}"
ItemDisplayBinding ="{Binding Description}"
SelectedItem ="{Binding SelectedOwnerOfVehicle.Value}"
Style="{StaticResource PickerStyle}"
>
<Picker.Triggers>
<DataTrigger
TargetType="Picker"
Binding="{Binding SelectedOwnerOfVehicle.IsValid}"
Value="False">
<Setter Property="behaviours:LineColorBehavior.ApplyLineColor" Value="True" />
<Setter Property="behaviours:LineColorBehavior.LineColor" Value="{StaticResource ErrorColor}" />
</DataTrigger>
<DataTrigger
TargetType="Picker"
Binding="{Binding SelectedOwnerOfVehicle.IsValid, Converter={StaticResource InverseBoolConverter}}"
Value="False">
<Setter Property="behaviours:LineColorBehavior.ApplyLineColor" Value="True" />
<Setter Property="behaviours:LineColorBehavior.LineColor" Value="{StaticResource BackgroundColor}" />
</DataTrigger>
</Picker.Triggers>
<Picker.Behaviors>
<behaviours:EventToCommandBehavior
EventName="SelectedIndexChanged"
Command="{Binding ValidateSelectedOwnerOfVehicleCommand}" />
</Picker.Behaviors>
</Picker>
<Label
Text="{Binding SelectedOwnerOfVehicle.Errors, Converter={StaticResource FirstValidationErrorConverter}}"
Style="{StaticResource ValidationMessageStyle}">
</Label>
<Label
Margin="0,10,0,0"
Text="Reason For Cover"
Style="{StaticResource FormLabel}" />
<Picker
AutomationId="IdReasonForCoverPicker"
Margin="0,0,0,10"
x:Name="ReasonForCoverPicker"
Title="Please select"
ItemsSource="{Binding ReasonsForCoverPurchaseOptions}"
ItemDisplayBinding ="{Binding Description}"
SelectedItem ="{Binding SelectedReasonForCoverPurchase.Value}"
Style="{StaticResource PickerStyle}"
>
<Picker.Triggers>
<DataTrigger
TargetType="Picker"
Binding="{Binding SelectedReasonForCoverPurchase.IsValid}"
Value="False">
<Setter Property="behaviours:LineColorBehavior.ApplyLineColor" Value="True" />
<Setter Property="behaviours:LineColorBehavior.LineColor" Value="{StaticResource ErrorColor}" />
</DataTrigger>
<DataTrigger
TargetType="Picker"
Binding="{Binding SelectedReasonForCoverPurchase.IsValid, Converter={StaticResource InverseBoolConverter}}"
Value="False">
<Setter Property="behaviours:LineColorBehavior.ApplyLineColor" Value="True" />
<Setter Property="behaviours:LineColorBehavior.LineColor" Value="{StaticResource BackgroundColor}" />
</DataTrigger>
</Picker.Triggers>
<Picker.Behaviors>
<behaviours:EventToCommandBehavior
EventName="SelectedIndexChanged"
Command="{Binding ValidateSelectedReasonForCoverPurchaseCommand}" />
</Picker.Behaviors>
</Picker>
The OwnerOfVehiclePicker does not update its value as the available value list is scrolled - only when the Done button is tapped.
The ReasonForCover does update its value as the available value list is scrolled - we don't have to tap the Done button.
I cannot see any difference between these two. I don't think the Triggers are relevant - but I've left them in the XAML above, in case someone can spot a side effect.
Can anyone suggest why their behaviour would be different? This is breaking my UITest logic for selecting Picker values.