ComboBox ItemsSource绑定在DataTemplate中的问题

3

我试图将一个ComboBox绑定到我的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命名,并将其用作combobox绑定的ElementName。我不敢想象这是我做的那么难。我可能忽略了一些很明显的东西。有人能帮忙吗?如果必要,我可以提供更多具体信息,现在我只是时间紧迫。

谢谢,Dennis


在 VS 的运行时输出窗口中是否有任何绑定错误?GamesCV 集合中的项目是否有名为“Teams”的属性? - nemesv
你的DataContext没问题吧?你的GamesCV是一个(可观察的)集合,而该集合中的一个项目(GameCV)具有一个“Teams”公共属性,该属性是一个(可观察的)集合,其中的项具有一个公共属性TeamName。首先尝试检查这个。你可以先添加另一个GameCV的属性来检查你的测试DataTemplate的DataContext(?GameName?)。 - GameAlchemist
2个回答

4
也许您在路径中忘记了DataContext?如果使用RelativeSource,则会针对框架元素而不是DataContext进行定位,因此应该这样做:
{Binding DataContext.Teams, RelativeSource={RelativeSource AncestorType=ListBox}}

如果您在绑定方面遇到问题,检查错误,它们会告诉您所有需要知道的信息。


搞定了!谢谢,H.B. - 我觉得这应该是相当简单的事情。 - Dennis

0

对于 UWP,我是这样做的

   <GridView x:Name="abc" ItemsSource="{Binding Path=DataContext.Companies,RelativeSource={RelativeSource Mode=TemplatedParent}}"></GridView>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接