簡體   English   中英

如何使用stringformat以編程方式設置文本框的綁定?

[英]How to programatically set the binding of a textbox with stringformat?

我如何以編程方式執行以下操作(來自XAML):

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

public DateTime OrderDate

現在我有以下內容

TextBox txtboxOrderdDate = new TextBox();

而且我知道我需要做類似的事情

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

但我被困在這里......不知道如何繼續應用StringFormat,我也不確定SOURCE是正確的方法(我應該使用ElementName嗎?)

MainWindow成為類名。 將以下代碼中的MainWindow更改為您的類名。

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


}

您是否嘗試將bindingOrderDateStringFormat屬性設置為正確的格式? 據MSDN稱,它應該如何運作。

在后面的代碼中定義DateTime類型的屬性,然后綁定。

請參閱此鏈接

 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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM