Saltar al contenido

Concatenar cadena con enlaces XAML

Solución:

Vea si esto funciona para usted:

Text="{Binding totalCost, StringFormat="${0}"}"

Diferentes XAMLS pueden diferir, pero yo esperaría StringFormat en un Binding para trabajar solo si la propiedad de destino del enlace es de tipo String. En WPF, por ejemplo, funciona para TextBlock.Text, pero no para Label.Content, que es de tipo Object (ver también). Por esa razón, a menudo falla en silencio, lo que puede ser muy molesto si no está familiarizado con esa pequeña trampa explosiva.

Otra cosa útil para saber: ContentControl y sus muchos descendientes (Label, etc.) tiene un ContentStringFormat propiedad que coacciona Content a una cadena y la formatea. HeaderedItemsControl (clase base de MenuItem, etc.) y HeaderedContentControl (clase base de GroupBox etc.) cada uno tiene un HeaderStringFormat propiedad que hace lo mismo para sus respectivos Header propiedades.

Para las etiquetas hay una característica adicional: ContentStringFormat, ejemplo a continuación:

<Label Content="{Binding Tag, FallbackValue=Custom}" ContentStringFormat="Length: {0}" DataContext="{Binding ElementName=cbRebarLength, Path=SelectedItem}"/>

Aunque la respuesta seleccionada es correcta, ignorará las comas en los valores de su moneda o el período potencial. Una mejor manera sería exponer una propiedad get que proporcione el valor apropiado para el enlace. A continuación se muestra un fragmento de código para cualquier persona en el futuro.

<Label Text = "${Binding TotalCostFormatted}"
      x:Name = "totalCost"
      HorizontalOptions = "Start"
      VerticalOptions = "Start"
      Grid.Row = "6" Grid.Column = "1"/>

En su ViewModel

double totalCost;
public double TotalCost 
{
    get { return totalCost; }
    set 
    {
        totalCost = value;
        OnPropertyChanged(nameof(TotalCostFormatted));
    }
}
public string TotalCostFormatted
{
    get { return TotalCost.ToString("C0"); } 
}

Recuerde que siempre puede crear un get propiedad en tu ViewModel que expone algunos datos. Llama OnPropertyChanged o como se llame su método que implemente su INotifyPropertyChanged interfaz. Si quiere los centavos de su valor en dólares, cambie “C0” a solo “C”.

¡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 *