Ссылка MSDN, которую вы предоставили, говорит об этом довольно хорошо:
Этот метод используется компонентом, который программно устанавливает значение одного из своих собственных свойств, не отключая заявленное использование этого свойства приложением.Метод SetCurrentValue изменяет действующее значение свойства, но существующие триггеры, привязки данных и стили будут продолжать работать.
Предположим, вы пишете элемент управления TextBox
, и вы выставилиText
свойство, которое люди часто используют следующим образом:
<TextBox Text="{Binding SomeProperty}"/>
В коде вашего элемента управления, если вы позвоните SetValue
, вы перезапишете привязку с тем, что вы предоставите.Однако, если вы позвоните по номеру SetCurrentValue
, это свойство примет указанное значение, но не разрушит никаких привязок.
Насколько мне известно, совет Грега неверен.Вы всегда должны использовать GetValue
/ SetValue
из своего свойства оболочки CLR.SetCurrentValue
более полезен в сценариях, когда вам нужно, чтобы свойство принимало заданное значение, но не хотите перезаписывать какие-либо привязки, триггеры или стили, настроенные для вашего свойства.