2013-05-15 4 views
6

Wie programmatisch kann ich die folgenden (aus dem XAML):Wie programmiere ich die Bindung einer Textbox mit Stringformat?

<TextBox Name="OrderDateText" 
     Text="{Binding Path=OrderDate, StringFormat=dd-MM-yyyy}" 

public DateTime OrderDate 

Gerade jetzt

TextBox txtboxOrderdDate = new TextBox(); 

folgendes ich habe und ich weiß, dass ich wie

etwas tun müssen,
Binding bindingOrderDate = new Binding(); 
    bindingOrderDate.Source = "OrderDate"; 

Aber ich bin hier fest ... nicht sicher, wie Sie vorgehen, um das StringFormat anzuwenden, noch bin ich sicher, dass SOURCE der richtige Weg ist (sollte ich ElementName verwenden?)

+0

Kontrolle dieses http://stackoverflow.com/questions/3099048/wpf-binding-and-dynamically-assigning-stringformat-property –

+0

Ob 'OrderDate' ein Datepicker ist? –

+0

Wo ist die 'OrderDate'-Eigenschaft definiert? – Clemens

Antwort

8

Lassen Sie MainWindow der Klassenname sein. Ändern Sie MainWindow im folgenden Code zu Ihrem Klassennamen.

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); 


} 
+1

public DateTime Bestelldatum – JSchwartz

0

Haben Sie versucht, die bindingOrderDateStringFormat Eigenschaft auf das richtige Format zu setzen? So sollte es laut MSDN funktionieren.

-1

Definieren Sie eine Eigenschaft des Typs DateTime in Ihrem Code hinter und dann binden.

Bitte beziehen Sie sich auf link.

-2
 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] 
Verwandte Themen