Saltar al contenido

¿Cómo concatenar cadenas en Xamarin.Forms?

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 Labels

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *