Если вы хотите, чтобы ваш элемент управления "рассматривался как нормальный TextBlock
", то у вас нет другого выбора, кроме как наследоваться от TextBlock
.Это то, для чего предназначено наследование.
В противном случае вам действительно нужно добавить свойства к вашему UserControl
и связать их самостоятельно, хотя это большая работа, это связано с плохой гибкостью UserControl
.У вас не может быть свойства Text
для объекта, если он не наследуется от TextBlock
или вы не добавили его самостоятельно.
В качестве альтернативы вы можете использовать шаблоны для повторного шаблонирования ContentControl
, например:
public class ScrollingContent : ContentControl { }
<Window.Resources>
<Style TargetType="local:ScrollingContent">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:ScrollingContent">
<ScrollViewer
x:Name="TextScrollViewer"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Disabled">
<StackPanel>
<TextBlock x:Name="NormalTextBlock" />
<ContentPresenter></ContentPresenter>
</StackPanel>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<local:ScrollingContent>
<TextBlock Text="Whatever control I want" Foreground="Red"></TextBlock>
</local:ScrollingContent>
</Grid>
Но опять же, ваш контроль на самом деле не TextBlock
.