我有以下用户控件嵌入在另一个用户控件中。
<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)”但由于某种原因未显示标签中集合文本中的每个项目。请帮忙。
答案 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}" />