Если вы посмотрите на панель «Вывод» в VS во время выполнения, вы обнаружите, что привязки на ContentPresenter смотрят на DataContext
ContentPresenter для свойств TextFont
и BindedTextColor
, как и ожидалось - ноDataContext
не то, что вы ожидаете.Это свойство ContentPresenter
Content
.
ContentPresenter
- это очень специализированный элемент управления.Вы не хотите один здесь.Используйте его только по указанию, в ControlTemplate
.Для этого приложения используйте ContentControl
или Label
.
Если вы установите эти свойства без привязки, DataContext не будет проблемой, и вы получите то, что ожидаете.
Ошибка System.Windows.Data: 40: Ошибка пути BindingExpression: свойство 'TextFont' не найдено для объекта '' 'Строка' (HashCode = 966822854) '.BindingExpression: Path = TextFont;DataItem = 'String' (HashCode = 966822854);Целевым элементом является ContentPresenter (Name = '');Свойство target - «FontFamily» (тип «FontFamily»)
System.Windows.Data Ошибка: 40: ошибка пути BindingExpression: свойство «BindedTextColor» не найдено для «объекта» «String» (HashCode = 966822854)».BindingExpression: Path = BindedTextColor;DataItem = 'String' (HashCode = 966822854);Целевым элементом является ContentPresenter (Name = '');Свойство target - 'Foreground' (тип 'Brush')
Всякий раз, когда привязка совершает что-то явно неправильное, ищите в панели вывода ошибки.Если вы не решите проблему прямо сейчас, добавьте трассировку, и вы получите кучу отладочной информации в области вывода:
<ContentPresenter
Width="100"
Content="{Binding ID}"
TextBlock.FontFamily="{Binding TextFont, PresentationTraceSources.TraceLevel=High}"
TextBlock.Foreground="{Binding BindedTextColor}"
/>