[英]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);
}
您是否嘗試將bindingOrderDate
的StringFormat
屬性設置為正確的格式? 據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.