Контекст данных UserControl

Я создаю 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>

, где Цвет и Текст - это свойства зависимости элемента управления, определенные в коде. Это работает, но каждый раз указывать ElementName кажется ненужным.

Другой вариант, который работает, - использовать

<UserControl x:Class=… DataContext="{Binding ElementName=ThisControl}" Name="ThisControl">

и не указывать ElementName s, но это не похоже на чистый решение для меня тоже.

У меня два вопроса:

  1. Почему не работает ?
  2. Как лучше всего сделать что-то подобное?
41
задан svick 22 February 2011 в 11:21
поделиться