Почему Run.Text по умолчанию выполняет двустороннюю привязку?

In. NET 4.0, Run.Text можно привязать. Поэтому я попытался привязать его:


Но когда я запустил, я получил ошибку: «Привязка TwoWay или OneWayToSource не может работать со свойством только для чтения» DisplayText 'типа' SomeNamespace.SomeClass '. "

Мое свойство DisplayText действительно было доступно только для чтения, но также и Run - Run входит в TextBlocks, которые вы не можете редактировать. Так зачем мне это Ошибка? Я копался в PresentationFramework с помощью dotPeek и, конечно же:

public static readonly DependencyProperty TextProperty =
    DependencyProperty.Register("Text", typeof (string), typeof (Run),
    (PropertyMetadata) new FrameworkPropertyMetadata((object) string.Empty,
        FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
        new PropertyChangedCallback(Run.OnTextPropertyChanged),
        new CoerceValueCallback(Run.CoerceText)));

Четвертая строка, обычная как день, указывает, что Run.Text должен по умолчанию связываться двусторонним, что не имеет смысла и похоже на вопиющая ошибка дизайна.

Конечно, это достаточно легко обойти:


Но почему мне нужно иметь , чтобы обойти это? Почему Run по умолчанию выполняет двустороннюю привязку?

23
задан Arcturus 11 January 2019 в 10:10
поделиться