WPF UserControl绑定问题

时间:2010-03-10 23:52:58

标签: wpf silverlight

我有以下用户控件嵌入在另一个用户控件中。

<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>

以上是用户控件(controlB)的XAML代码,嵌入在另一个用户控件(controlA)中。

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

controlA在屏幕上显示为“(Collection)”但由于某种原因未显示标签中集合文本中的每个项目。请帮忙。

2 个答案:

答案 0 :(得分:5)

问题在于:

Content="{Binding Contexts}"

你的意思是:

DataContext="{Binding Contexts}"

您获得“(Collection)”而不是您为controlA定义的内容的原因是您在ControlA的XAML中定义的内容已替换为您的集合。 UserControl的XAML文件的主体只是设置其Content属性:您在设置后替换它。

答案 1 :(得分:2)

当您声明ContextContentsUserControl时,您正在设置其Content属性。您需要设置DataContext:

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