Я создаю 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}">не работает? - Каков наилучший способ сделать что-то подобное?