Рефакторинг кода XAML с привязкой - PullRequest
0 голосов
/ 19 марта 2009

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

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

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

ControlA XAML:

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

ControlA C #:

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 Ответ

0 голосов
/ 19 марта 2009

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

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

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

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

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

...