6
votes

Comment définir de manière programmable la liaison d'une zone de texte avec StringFormat?

Comment faire de manière programmatique les éléments suivants (à partir de xaml): xxx

maintenant, j'ai ce qui suit xxx

et je sais que j'ai besoin de faire quelque chose comme xxx

mais je suis coincé ici ... Je ne sais pas comment procéder à appliquer le stringformat ni je suis sûr que cette source est la bonne voie ( Dois-je utiliser ElementName?)


4 commentaires

Vérifiez cette Stackoverflow.com/questions / 3099048 / ...


Que ce soit OrderDate est un dayspicker?


Où est la propriété OrderDate définie?


Ordonnance de DateTime publique


4 Réponses :


0
votes

Avez-vous essayé de définir le fichier BindingorderDate 's stringformat propriété au format approprié? C'est comme ça que cela devrait fonctionner, selon MSDN.


0 commentaires

-1
votes

Définissez une propriété de type DateTime dans votre code derrière puis lier.

Veuillez vous reporter à ce Lien .


0 commentaires

9
votes

let mainwindow code> Soyez le nom de la classe. Changer mainwindow code> dans le code ci-dessous à votre nom de classe.

public DateTime OrderDate
{
    get { return (DateTime) GetValue(OrderDateProperty); }
    set { SetValue(OrderDateProperty, value); }
}

public static readonly DependencyProperty OrderDateProperty =
    DependencyProperty.Register("OrderDate",
                                typeof (DateTime),  
                                typeof (MainWindow),
                                new PropertyMetadata(DateTime.Now, // Default value for the property
                                                     new PropertyChangedCallback(OnOrderDateChanged)));

private static void OnOrderDateChanged(object sender, DependencyPropertyChangedEventArgs args)
{
    MainWindow source = (MainWindow) sender;

    // Add Handling Code
    DateTime newValue = (DateTime) args.NewValue;
}

public MainWindow()
{
    InitializeComponent();

    OrderDateText.DataContext = this;
    var binding = new Binding("OrderDate")
        {
            StringFormat = "dd-MM-yyyy"
        };
    OrderDateText.SetBinding(TextBox.TextProperty, binding);

    //Testing
    OrderDate = DateTime.Now.AddDays(2);


}


0 commentaires

-2
votes
 Object data = new Object();

            TextBox txtboxOrderdDate = new TextBox();
            Binding bindingOrderDate = new Binding("Order Date", data, "OrderDate");
            bindingOrderDate.Format += new ConvertEventHandler(DecimalToCurrencyString);
            txtboxOrderdDate.DataBindings.Add(bindingOrderDate);

   private void DecimalToCurrencyString(object sender, ConvertEventArgs cevent)
        {

            if (cevent.DesiredType != typeof(string)) return;

            cevent.Value = ((decimal)cevent.Value).ToString("dd-MM-yyyy");
        }


//[For more information check MSDN][1]

0 commentaires