我有一个Telerik RadDatePicker,我绑定到SelectedDate属性。我希望此控件在控件中设置的默认日期被删除/删除时显示验证错误。我能够实现这一目标,但问题在于验证错误仅在按下Enter或当我们在控件外单击时才会发生。更新源不丢失焦点 - WPF Telerik RADDatePicker
有没有办法让RadDatePicker在不移动焦点的情况下更新源代码? (尝试UpdateSourceTrigger = PropertyChanged,但它仍然没有工作)
我有一个Telerik RadDatePicker,我绑定到SelectedDate属性。我希望此控件在控件中设置的默认日期被删除/删除时显示验证错误。我能够实现这一目标,但问题在于验证错误仅在按下Enter或当我们在控件外单击时才会发生。更新源不丢失焦点 - WPF Telerik RADDatePicker
有没有办法让RadDatePicker在不移动焦点的情况下更新源代码? (尝试UpdateSourceTrigger = PropertyChanged,但它仍然没有工作)
您可以使用行为,捕获无论(击键,值更改等)和强制数据绑定更新。
我写了一个类似的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;
}
}
我可能是有点晚了,但你可以使用RadDatePicker
的CurrentDateTimeText属性来延长zish的回答,我用RadDatePicker的SelectedDate属性绑定到我的VM的DateTime? SelectedDate属性没有在绑定中设置验证。在绑定中,我使用RadDatePicker的CurrentDateTimeText属性绑定到我的VM的字符串SelectedDateText属性,其中ValidatesOnErrors = True。然后,在VM中,我验证了这个!String.IsNullOrEmpty(SelectedDateText)。这给了我想要的行为,而不需要行为。