Немного опоздал на вопрос здесь (всего на несколько лет :), но для тех, кто заинтересовался, у меня было похожее требование в проекте, поэтому я создал два расширения разметки под названием DelayBindingExtension
и DelayMultiBindingExtension
.
Они работают как обычно Bindings
с добавлением, которое вы можете указать UpdateSourceDelay
и / или UpdateTargetDelay
, оба из которых являются TimeSpan
свойствами. Кроме того, я проверил, что он без утечек (он использует обратный вызов с измененным свойством привязки свойства зависимости через контекст наследования, а не DependencyPropertyDescriptor
) .
Пример использования для DelayBinding
<TextBox Text="{db:DelayBinding Path=TextProperty,
UpdateSourceTrigger=PropertyChanged,
UpdateSourceDelay='00:00:01'}"/>
А для DelayMultiBinding
<cs:ColorSelector.SelectedColor>
<db:DelayMultiBinding Mode="TwoWay"
Converter="{StaticResource ColorConverter}"
UpdateSourceDelay="00:00:02"
UpdateTargetDelay="00:00:01">
<Binding Path="Red" />
<Binding Path="Green" />
<Binding Path="Blue" />
</db:DelayMultiBinding>
</cs:ColorSelector.SelectedColor>
Исходный код и пример использования для DelayBinding
и DelayMultiBinding
можно загрузить здесь .
Если вас интересуют подробности реализации, вы можете ознакомиться с моей записью в блоге об этом здесь: DelayBinding и DelayMultiBinding с Source и Target delay