Обновление источника без потери фокуса - WPF Telerik RADDatePicker - PullRequest
1 голос
/ 27 февраля 2011

У меня есть Telerik RadDatePicker, который я привязываю к свойству SelectedDate.Я хочу, чтобы этот элемент управления отображал ошибку проверки при удалении / удалении установленной в нем даты по умолчанию.Мне удалось этого добиться, но проблема заключалась в том, что ошибка проверки возникает только при нажатии клавиши Enter или при щелчке мышью вне элемента управления.

Есть ли способ сообщить RadDatePicker обновить источник, не перемещая фокус?(Пробовал UpdateSourceTrigger = PropertyChanged, но все равно он не работал)

Ответы [ 3 ]

1 голос
/ 13 августа 2013

Возможно, я немного опоздал, но вы можете использовать свойство CurrentDateTimeText из RadDatePicker

1 голос
/ 27 февраля 2011

Вы можете использовать Поведение, которое ловит независимо от (нажатия клавиш, изменения значений и т. Д.) И принудительно обновлять привязку данных.

Я написал аналогичное для использования в TextBox в Silverlight, посколькув Silverlight невозможно изменить UpdateSourceTrigger, как в WPF.

Вы можете использовать следующий код и внести необходимые изменения:

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;
    }
}
0 голосов
/ 27 февраля 2015

Чтобы расширить ответ Зиша, я использую свойство SelectedDate RadDatePicker's, привязанное к DateTime моей виртуальной машины? Свойство SelectedDate без проверки в привязке. Я использую свойство RadDatePicker's CurrentDateTimeText, связанное со свойством строки моей виртуальной машины SelectedDateText с ValidatesOnErrors = True в привязке. Затем в виртуальной машине я проверяю это! String.IsNullOrEmpty (SelectedDateText). Это дает мне поведение, которое я хочу, без необходимости поведения.

...