Код конвертера XAML с привязкой

Я пытаюсь реорганизовать такой XAML, вводя новый пользовательский контроль:

<Window ...>
  <ComboBox ItemsSource="{Binding Greetings}" />
</Window>

После добавления элемента управления у меня есть

ControlA XAML:

<UserControl ...>
  <ComboBox ItemsSource="{Binding Items}" />
</UserControl>

ControlA С#:

public static readonly DependencyProperty ItemsProperty =
  WpfUtils.Property<IEnumerable, ControlA>("Items");

public IEnumerable Items { get; set; }

Новое окно XAML:

<Window ...>
  <uc:ControlA Items="{Binding Greetings}" />
</Window>

После этого я ничего не вижу в ComboBox. Что здесь не так?

Ответ 1

Ваш ComboBox является обязательным для DataContext. Поскольку ваш DataContext по-прежнему является объектом со списком, называемым Приветствия, это не сработает...

Ваш ContolA должен выглядеть примерно так:

<UserControl x:Name="Root" ...>
  <ComboBox ItemsSource="{Binding ElementName=Root, Path=Items}" />
</UserControl>

Теперь ваш combobox привязывается к свойству Items вашего ControlA, а не к свойству DataContext...

Надеюсь, что это поможет.