Я создаю UserControl
Я хочу использовать что-то вроде этого:
<controls:ColorWithText Color="Red" Text="Red color" />
До сих пор я реализовал аналогичные элементы управления, например:
<UserControl x:Class="Namespace.ColorWithText" Name="ThisControl">
<StackPanel Orientation="Horizontal" >
<Border Width="15" Height="15" Background="{Binding Color, ElementName=ThisControl}" />
<TextBlock Text="{Binding Text, ElementName=ThisControl}" />
</StackPanel>
</UserControl>
где Color
и Text
- это свойства зависимостей элемента управления, определенного в коде. Это работает, но указание ElementName
каждый раз кажется ненужным.
Другим вариантом, который работает, является использование
<UserControl x:Class=… DataContext="{Binding ElementName=ThisControl}" Name="ThisControl">
и не указывая ElementName
s, но это тоже не похоже на чистое решение.
У меня есть два вопроса:
- Почему
<UserControl DataContext="{RelativeSource Self}">
не работает? - Каков наилучший способ сделать что-то подобное?