我有一个Telerik RadDatePicker,我绑定到SelectedDate属性。我希望此控件在删除/删除控件中设置的默认日期时显示验证错误。我能够实现这一点,但问题是只有在按下Enter或我们在控件外部点击时才会出现验证错误。
有没有办法告诉RadDatePicker更新源而不移动焦点? (尝试过UpdateSourceTrigger = PropertyChanged,但它仍然没有工作)
答案 0 :(得分: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 :(得分:1)
我现在可能有点晚了,但您可以使用RadDatePicker的CurrentDateTimeText属性
答案 2 :(得分:0)
为了扩展zish的答案,我使用绑定到VM的DateTime的RadDatePicker的SelectedDate属性? SelectedDate属性,在绑定中没有设置验证。我使用RadDatePicker的CurrentDateTimeText属性绑定到我的VM的字符串SelectedDateText属性,绑定中的ValidatesOnErrors = True。然后,在VM中,我验证了!String.IsNullOrEmpty(SelectedDateText)。这给了我我想要的行为而不需要行为。