stringformat concatenar xaml string-formatting

concatenar - ¿Cómo usar StringFormat en elementos XAML?



xamarin forms xaml converter (4)

En general, puede buscar una propiedad de dependencia *StringFormat asociada. Por ejemplo, todas las implementaciones de ContentControl (como Label y Tooltip) tienen la propiedad de dependencia ContentStringFormat :

<Label Content="{Binding Path=DateAsked}" ContentStringFormat="{}{0:yyyy/MM/dd HH:mm:ss}" />

En su caso, mientras que GridViewColumn tiene la propiedad de dependencia HeaderStringFormat para ir junto con Header , no hay ningún análogo para DisplayMemberBinding por lo que necesitará .NET 3.5 SP1 (consígalo con Visual Studio 2008 SP1 ) o mejor para usar el nuevo BindingBase .StringFormat Propiedad :

<GridViewColumn Header="Order ID" DisplayMemberBinding="{Binding Path=OrderID, StringFormat=''{}{0:dd.MM.yyyy}''}" />

Hay muchos más ejemplos en la entrada del blog Probar Binding.StringFormat .

Estoy metido en una pila de elementos XAML vinculante para las órdenes.

La fecha del pedido se muestra como, por ejemplo, "31/12/2008 12:00:00 AM".

Quiero que se muestre como, por ejemplo, "31.12.2008".

¿Cómo puedo hacer esto? He visto otras preguntas de stackoverflow mencionar StringFormat, pero utilizan multibinding de forma que no puedo ponerme a trabajar.

Este es el tipo de sintaxis que me gustaría (esto es pseudocódigo), simplemente especificando StringFormat donde lo necesita, ¿es esto posible de alguna manera?

<StackPanel> <ListView ItemsSource="{Binding Orders}"> <ListView.View> <GridView> <GridViewColumn Header="Order ID" DisplayMemberBinding="{Binding Path=OrderID}" StringFormat="{}{1:dd.MM.yyyy}"/> <GridViewColumn Header="Order Date" DisplayMemberBinding="{Binding Path=OrderDate}"/> </GridView> </ListView.View> </ListView> </StackPanel>


No lo he probado, pero creo que esto debería funcionar:

<GridViewColumn Header="Order Date" DisplayMemberBinding= "{Binding Path=OrderDate, StringFormat=''{}{0:dd.MM.yyyy}''}"/>


Si desea localizar el formato de fecha, puede incluirlo en su archivo .resx. Deberá configurar su aplicación para la localización siguiendo esta guía: https://developer.xamarin.com/guides/xamarin-forms/advanced/localization/ .

La entrada de resx:

<data name="DateFormat" xml:space="preserve"> <value>{0:dddd d MMMM H&#x3a;mm}</value> </data>

En su página de contenido, a continuación, incluya la ubicación del archivo resx

xmlns:il8n="clr-namespace:MyProject.Localization;assembly=MyProject"

Y luego puedes usarlo en tu encuadernación así:

<Label Text = "{Binding Time, StringFormat={il8n:Translate DateFormat}}"


XAML

<UserControl.Resources> <myNamespace:DateTimeConverter x:Key="DateTimeConverter" /> </UserControl.Resources> <GridViewColumn DisplayMemberBinding=="{Binding Path=OrderDate, Converter={StaticResource DateTimeConverter}}" />

DO#

public class DateTimeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value != null) { return ((DateTime)value).ToString("dd.MM.yyyy"); } else { return String.Empty; } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return DateTime.Parse(value.ToString()); } }