2013-05-15 16 views
6

: Ben şu var Şu andaBir metin kutusunun stringformat ile bağlanması nasıl programlanır? Ben programlı (XAML itibaren) Aşağıdaki Nasılsınız

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

public DateTime OrderDate 

TextBox txtboxOrderdDate = new TextBox(); 

Ve ben böyle bir şey yapmak gerektiğini biliyorum

Binding bindingOrderDate = new Binding(); 
    bindingOrderDate.Source = "OrderDate"; 

Ama burada sıkışıp kaldım ... StringFormat uygulamasına nasıl devam edeceğimi bilmiyorum, ya da eminim ki SOURCE doğru yoldur (ElementName kullanmalı mıyım?)

+0

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

+0

'OrderDate' bir DatePicker olsun? –

+0

'OrderDate' özelliği nerede tanımlandı? – Clemens

cevap

8

Sınıf Adı MainWindow olsun. Aşağıdaki kodda MainWindow'u sınıf adınıza değiştirin.

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 OrderDate – JSchwartz

0

bindingOrderDate ürününün StringFormat özelliğini uygun biçime ayarlamayı denediniz mi? MSDN'ye göre böyle çalışması gerekiyor.

-1

Arka planda kodunuza DateTime tipi bir özellik tanımlayın ve ardından bağlayın.

Lütfen bu link'a bakın.

-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] 
İlgili konular