Solución:
No se puede vincular a varias propiedades en un View
Element
.
En este caso, debe crear una nueva propiedad que tenga el formato que desee y vincularla al View
.
Ejemplo:
public class EmployeeViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName => $"{FirstName} {LastName}";
}
Entonces en XAML
:
<Label Text="{Binding FullName}"/>
Otro enfoque:
Como se sugiere en los comentarios. también podemos usar FormattedText
propiedad en un Label
:
<Label.FormattedText>
<FormattedString>
<Span Text="{Binding FirstName}" />
<Span Text="{Binding LastName}"/>
</FormattedString>
</Label.FormattedText>
Podrías usar IValueConverter
, que aceptará Employee
y devolverá el nombre completo.
O puede usar MultiComponentLabel. Te permite vincular un par de valores diferentes a uno Label
.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage x:Name="Page"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:controls="clr-namespace:SuperForms.Controls;assembly=SuperForms.Controls"
x:Class="SuperForms.Samples.MultiComponentLabelPage">
<controls:MultiComponentLabel Margin="0,20,0,0">
<controls:MultiComponentLabel.Components>
<controls:TextComponent Text="{Binding EMP_LAST_NAME}"/>
<controls:TextComponent Text="{Binding EMP_FIRST_NAME}"/>
</controls:MultiComponentLabel.Components>
</controls:MultiComponentLabel>
</ContentPage>
Solo usa MultiComponentLabel
en lugar de pareja Label
s
Para tu ListView
<ListView ItemsSource="{Binding EmployeesList}"
HasUnevenRows="True">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid Padding="10" RowSpacing="10" ColumnSpacing="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<controls:CircleImage Source="icon.png"
HeightRequest="66"
HorizontalOptions="CenterAndExpand"
Aspect="AspectFill"
WidthRequest="66"
Grid.RowSpan="2" />
<controls:MultiComponentLabel Grid.Row="1" Grid.Column="1">
<controls:MultiComponentLabel.Components>
<controls:TextComponent Text="{Binding EMP_LAST_NAME}"/>
<controls:TextComponent Text="{Binding EMP_FIRST_NAME}"/>
</controls:MultiComponentLabel.Components>
</controls:MultiComponentLabel>
</Grid>
</ViewCell>
<Label Text="{Binding Value, StringFormat="string before value {0:F0} string after value"}"/>
Suponga que su valor es 1234. La salida será en este caso:
cadena antes del valor 1234 cadena después del valor
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)