[英]C# Override OnValidating to support null value but breaks Data Binding
我有一個繼承自 TextBox 並覆蓋 OnValidating 方法以允許空字符串的 CustomTextBox。 CustomTextBox 綁定到域中的 Property Price。
public class CustomTextBox
{
protected override void OnValidating(...)
{
if(Text=="")
{
Text = null;
return;
}
base.OnValidating(e);
}
}
public class Domain
{
public System.Nullable<decimale> Price
{ ... }
}
除了這會阻止用戶將價格設置為 null 之外,一切都運行良好。 Text=null;
沒有傳播到域 object。 當用戶清除文本框時,有沒有辦法將價格重置回 null?
如果您使用綁定將值傳播到域 object,那么您應該將此邏輯放在Parse 事件中。
// Add binding
var b = new Binding("Text", myDataSource, "BoundProperty");
b.Parse += OnNullableTextBindingParsed;
myTextBox.DataBindings.Add(b);
// Sample parse handler
private void OnNullableTextBindingParsed(object sender, ConverterEventArgs e)
{
if (e.Value == String.Empty) e.Value = null;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.