В .NET 4.0, Run.Text является привязываемым.Поэтому я попытался связать его:
<Run Text="{Binding DisplayText}"/>
Но когда я запустился, я получил ошибку: «Привязка 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 Text="{Binding DisplayText, Mode=OneWay}"/>
Но почему я должен иметь , чтобы обойти это? Почему Run связывает по умолчанию с двусторонним связыванием?