簡體   English   中英

C# 覆蓋 OnValidating 以支持 null 值但破壞數據綁定

[英]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.

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