我正在尝试将一个组合框绑定到我的viewmodel上的项目列表(ObservableCollection)。如果我在我的观点中使用这样的东西:
<ComboBox ItemsSource="{Binding Path=Teams}" DisplayMemberPath="TeamName" />
一切都好。但是,如果我使用相同的组合框并将其用作另一个用作列表框项目模板的模板的数据模板的一部分,则列表中不会显示任何内容。伪代码示例:
<DataTemplate x:Key="test">
<TextBlock Text="Team:" />
<ComboBox ItemsSource="{Binding Path=Teams}" DisplayMemberPath="TeamName" />
</DataTemplate>
<ListBox ItemsSource="GamesCV" ItemTemplate="{StaticResource test}" />
我想也许我需要添加一个相对来源所以我试过了,但没有运气。我也尝试给我的UserControl一个名字,并在我的组合框绑定上使用它作为ElementName。我无法想象这就像我在制作它一样难。我可能错过了一些明显的东西。有人可以帮忙吗?如果有必要,我可以提供更多细节,我现在只是按时间。
谢谢,丹尼斯
答案 0 :(得分:4)
也许你忘记了路径中的DataContext
?如果您使用RelativeSource
,则定位框架元素而不是DataContext
,因此应该这样做:
{Binding DataContext.Teams, RelativeSource={RelativeSource AncestorType=ListBox}}
此外,如果您在绑定check for errors时遇到问题,他们会告诉您所有您需要知道的事情。
答案 1 :(得分:0)
对于UWP,我得到了这样的
<GridView x:Name="abc" ItemsSource="{Binding Path=DataContext.Companies,RelativeSource={RelativeSource Mode=TemplatedParent}}"></GridView>