2009-03-19 3 views
0

попытке реорганизовать такой XAML, вводя новый пользовательский элемент управления:Рефакторинг 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. Что здесь не так?

ответ

0

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

Ваш ContolA должен напоминать что-то вроде этого:

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

Теперь ваша выпадающий связывается со свойством элементы вашего ControlA, вместо вашего свойства DataContext ...

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

+0

У меня было это.DataContext = this; в управляющих кодах. Также добавил Root и новый ComboBox, как вы предложили, но все равно получите пустые поля. – alex2k8

+0

Gotcha, установка 'this.DataContext = this;' переписал контекст для главного окна. – alex2k8

Смежные вопросы