Xamarin forms View Visibility
abanoub adly
41
Reputation points
am developing an app that takes an input from user with error labels for input validation
the error label visibility default value is false.
am having more than a 10 entry and their error label.
and after the app takes input and validates it with error labels it looks like this
at the very end of the layout.
this my xaml code
<ContentPage.Content>
<ScrollView>
<StackLayout
Margin="20">
<!--Unit Type Picker-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
Text="{xct:Translate UnitType}"
Style="{StaticResource PickerLabelStyle}"/>
<Picker
Grid.Column="1"
ItemsSource="{Binding UnitTypeList,Mode=OneWay}"
SelectedIndex="{Binding UnitTypeIndex,Mode=OneWayToSource}"
Style="{StaticResource PickerStyle}"/>
</Grid>
<Label
Text="{Binding UnitTypeError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding UnitTypeErrorVis,Mode=OneWay}"
/>
<!--Unit IsFurnished Picker-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
Text="{xct:Translate Furnished}"
Style="{StaticResource PickerLabelStyle}"/>
<Picker
Grid.Column="1"
ItemsSource="{Binding IsFurnishedList,Mode=OneWay}"
SelectedIndex="{Binding FurnishedIndex,Mode=OneWayToSource}"
Style="{StaticResource PickerStyle}"/>
</Grid>
<Label
Text="{Binding FurnishedError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding FurnishedErrorVis,Mode=OneWay}"
/>
<!--Unit National ID-->
<Entry
Placeholder="{xct:Translate UnitNationalID}"
Text="{Binding UnitNationalID}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding UnitNationalIDError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding UnitNationalIDErrorVis,Mode=OneWay}"
/>
<!--Floor Num-->
<Entry
Placeholder="{xct:Translate FloorNum}"
Text="{Binding FloorNum,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding FloorNumError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding FloorNumErrorVis,Mode=OneWay}"
/>
<!--Unit Space-->
<Entry
Placeholder="{xct:Translate UnitSpace}"
Text="{Binding UnitSpace,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding UnitSpaceError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding UnitSpaceErrorVis,Mode=OneWay}"
/>
<!--Living Room Space-->
<Entry
Placeholder="{Binding LivingRoomSpacePH,Mode=OneWay}"
Text="{Binding LivingRoomSpace,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<!--Rooms Num-->
<Entry
Placeholder="{Binding RoomsNumPH,Mode=OneWay}"
Text="{Binding RoomsNum,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<!--Lights Num-->
<Entry
Placeholder="{Binding LightsNumPH,Mode=OneWay}"
Text="{Binding LightsNum,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<!--Baths Num-->
<Entry
Placeholder="{xct:Translate BathsNum}"
Text="{Binding BathsNum,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding BathsNumError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding BathsNumErrorVis,Mode=OneWay}"
/>
<!--Maid Rooms Num-->
<Entry
Placeholder="{xct:Translate MaidRoomsNum}"
Text="{Binding MaidRoomsNum,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding MaidRoomsNumError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding MaidRoomsNumErrorVis,Mode=OneWay}"
/>
<!--Air Conditioner Type Picker-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
Text="{xct:Translate AirCondType}"
Style="{StaticResource PickerLabelStyle}"/>
<Picker
Grid.Column="1"
ItemsSource="{Binding AirCondTypeList,Mode=OneWay}"
SelectedIndex="{Binding AirCondTypeIndex,Mode=OneWayToSource}"
Style="{StaticResource PickerStyle}"/>
</Grid>
<Label
Text="{Binding AirCondTypeError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding AirCondTypeErrorVis,Mode=OneWay}"
/>
<!--Air Cond Power-->
<Entry
Placeholder="{xct:Translate AirCondPower}"
Text="{Binding AirCondPower,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding AirCondPowerError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding AirCondPowerErrorVis,Mode=OneWay}"
/>
<!--Rent-->
<Entry
Placeholder="{xct:Translate Rent}"
Text="{Binding Rent,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding RentError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding RentErrorVis,Mode=OneWay}"
/>
<!--Discount-->
<Entry
Placeholder="{Binding DiscountPH,Mode=OneWay}"
Text="{Binding Discount,Mode=OneWayToSource}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<!--Unit Availability Picker-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label
Grid.Column="0"
Text="{xct:Translate UnitAvailability}"
Style="{StaticResource PickerLabelStyle}"/>
<Picker
Grid.Column="1"
ItemsSource="{Binding UnitAvailabilityList,Mode=OneWay}"
SelectedIndex="{Binding UnitAvailabilityIndex,Mode=OneWayToSource}"
Style="{StaticResource PickerStyle}"/>
</Grid>
<Label
Text="{Binding UnitAvailabilityError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding UnitAvailabilityErrorVis,Mode=OneWay}"
/>
<!--Electricity Meter-->
<Entry
Placeholder="{xct:Translate ElectricityMeterInfo}"
Text="{Binding ElecMeter}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding ElecMeterError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding ElecMeterErrorVis,Mode=OneWay}"
/>
<!--Water Meter-->
<Entry
Placeholder="{xct:Translate WaterMeterInfo}"
Text="{Binding WaterMeter}"
Style="{StaticResource EntryStyle}"
Keyboard="Numeric"/>
<Label
Text="{Binding WaterMeterError,Mode=OneWay}"
Style="{StaticResource ErrorLabel}"
IsVisible="{Binding WaterMeterErrorVis,Mode=OneWay}"
/>
<!--Submit Button-->
<Button
Text="{xct:Translate Submit}"
Command="{Binding SubmitCommand}"
Style="{StaticResource ButtonStyle}"/>
</StackLayout>
</ScrollView>
</ContentPage.Content>
and my static resourse for styling each view
<!--Entry Style-->
<Style x:Key="EntryStyle" TargetType="Entry">
<Setter Property="VerticalOptions" Value="CenterAndExpand"/>
<Setter Property="HorizontalOptions" Value="FillAndExpand"/>
<Setter Property="PlaceholderColor" Value="Black"/>
<Setter Property="HorizontalTextAlignment" Value="Start"/>
</Style>
<!--Button Style-->
<Style x:Key="ButtonStyle" TargetType="Button">
<Setter Property="VerticalOptions" Value="CenterAndExpand"/>
<Setter Property="HorizontalOptions" Value="CenterAndExpand"/>
<Setter Property="Margin" Value="20"/>
<Setter Property="CornerRadius" Value="30"/>
<Setter Property="BackgroundColor" Value="Black"/>
<Setter Property="TextColor" Value="White"/>
<Setter Property="WidthRequest" Value="140"/>
</Style>
<!--Error Label-->
<Style x:Key="ErrorLabel" TargetType="Label">
<Setter Property="TextColor" Value="Red"/>
</Style>
<!--Picker Style-->
<Style x:Key="PickerStyle" TargetType="Picker">
<Setter Property="WidthRequest" Value="300"/>
<Setter Property="VerticalOptions" Value="CenterAndExpand"/>
<Setter Property="HorizontalOptions" Value="CenterAndExpand"/>
</Style>
<!--Picker Label Style-->
<Style x:Key="PickerLabelStyle" TargetType="Label">
<Setter Property="VerticalOptions" Value="CenterAndExpand"/>
<Setter Property="HorizontalOptions" Value="CenterAndExpand"/>
<Setter Property="TextColor" Value="Black"/>
<Setter Property="FontSize" Value="Medium"/>
</Style>
Developer technologies .NET Xamarin
5,380 questions
Sign in to answer