如何以编程方式设置字符串格式文本框的绑定

本文关键字:文本 格式 绑定 字符串 设置 编程 方式 | 更新日期: 2023-09-27 18:13:31

如何以编程方式执行以下操作(来自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]