2011-02-27 54 views
1

我有一個Telerik RadDatePicker,我綁定到SelectedDate屬性。我希望此控件在控件中設置的默認日期被刪除/刪除時顯示驗證錯誤。我能夠實現這一目標,但問題在於驗證錯誤僅在按下Enter或當我們在控件外單擊時纔會發生。更新源不丟失焦點 - WPF Telerik RADDatePicker

有沒有辦法讓RadDatePicker在不移動焦點的情況下更新源代碼? (嘗試UpdateSourceTrigger = PropertyChanged,但它仍然沒有工作)

回答

1

您可以使用行爲,捕獲無論(擊鍵,值更改等)和強制數據綁定更新。

我寫了一個類似的Silverlight的TextBox,因爲在Silverlight中,你不能像WPF一樣更改UpdateSourceTrigger。

您可以使用下面的代碼,並進行必要的調整:

public class TextBoxUpdateBehavior : Behavior<TextBox> 
{ 
    public TextBoxUpdateBehavior() 
    { 
    } 

    protected override void OnAttached() 
    { 
     base.OnAttached(); 
     AssociatedObject.TextChanged += AssociatedObjectOnTextChanged; 
    } 

    private void AssociatedObjectOnTextChanged(object sender, TextChangedEventArgs args) 
    { 
     var bindingExpr = AssociatedObject.GetBindingExpression(TextBox.TextProperty); 
     bindingExpr.UpdateSource(); 
    } 

    protected override void OnDetaching() 
    { 
     base.OnDetaching(); 
     AssociatedObject.TextChanged -= AssociatedObjectOnTextChanged; 
    } 
} 
1

我可能是有點晚了,但你可以使用RadDatePicker

0

的CurrentDateTimeText屬性來延長zish的回答,我用RadDatePicker的SelectedDate屬性綁定到我的VM的DateTime? SelectedDate屬性沒有在綁定中設置驗證。在綁定中,我使用RadDatePicker的CurrentDateTimeText屬性綁定到我的VM的字符串SelectedDateText屬性,其中ValidatesOnErrors = True。然後,在VM中,我驗證了這個!String.IsNullOrEmpty(SelectedDateText)。這給了我想要的行爲,而不需要行爲。