Проблема привязки пользовательского элемента управления WPF - PullRequest
2 голосов
/ 11 марта 2010

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

<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 отображается на экране как «(Коллекция)», но по какой-то причине не отображает каждый элемент в тексте коллекции на этикетке. Пожалуйста, помогите.

Ответы [ 2 ]

5 голосов
/ 11 марта 2010

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

Content="{Binding Contexts}"

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

DataContext="{Binding Contexts}"

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

2 голосов
/ 11 марта 2010

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

<local:ContextContentsUserControl Height="30" DataContext="{Binding Contexts}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...