2010-03-10 21 views
2

У меня есть следующий пользовательский элемент управления, встроенный в другой пользовательский элемент управления.Проблема привязки UserControl WPF

<UserControl.Resources> 

    <DataTemplate x:Key="ContextsTemplate"> 
     <Label Margin="10,0,20,0" Content="{Binding Name}"/> 
    </DataTemplate> 

</UserControl.Resources> 

<ItemsControl Name="Contexts" 
        Background="Transparent" 
        ItemsSource="{Binding}" 
        Margin="0,0,0,0" 
        VerticalAlignment="Center" 
        AlternationCount="2" 
        ItemTemplate="{StaticResource ContextsTemplate}"> 
</ItemsControl> 

Вот XAML-код пользовательского элемента управления (controlB) выше, который встроен в другой пользовательский элемент управления (ControlA).

<local:ContextContentsUserControl Height="30" Content="{Binding Contexts}"/> 

ControlA отображается на экране в виде «(Сборник)», но по какой-то причине не показывает каждый элемент в тексте коллекций на этикетке. Пожалуйста помоги.

ответ

5

Проблема здесь:

Content="{Binding Contexts}" 

Вы имели в виду:

DataContext="{Binding Contexts}" 

Причина вы получили "(Сборник)" вместо контент, который вы определили для controlA, - это содержимое, которое вы определили в XAML для ControlA, было заменено вашей коллекцией. Тело файла XAML UserControl просто устанавливает его свойство Content: вы заменили его после его установки.

2

Когда вы объявляете свой ContextContentsUserControl, вы устанавливаете его свойство Content. Вы должны быть настройки DataContext вместо:

<local:ContextContentsUserControl Height="30" DataContext="{Binding Contexts}" /> 
Смежные вопросы