我正在尝试使用UWP编写纸牌游戏,但又遇到了另一个绊脚石。 在我的ViewModel中,我有一个名为PlayersList的属性。 PlayersList包含XPosition和YPosition属性,它们应作为每个玩家对象的Canvas上的绝对位置。我的用户界面中包含以下代码:
<Grid>
<ItemsControl ItemsSource="{x:Bind PlayerList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Canvas Canvas.Top="{Binding YPosition}"
Canvas.Left="{Binding XPosition}">
</Canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
问题是未应用ItemsControl.ItemTemplate。似乎PlayerList中的所有项目都在Canvas位置0,0上呈现,一个在另一个之上。如果我注释掉ItemsControl.ItemsPanel代码块,则列表中的所有项目都将呈现为好像在垂直StackPanel中一样。 我试图将列表更改为一个Observable Collection,甚至只是一个具有相同结果的对象。我什至可以在没有渲染的ItemTemplate上添加一个测试TextBlock,这向我证明了模板没有被应用。 这项工作不应该按书面规定进行吗?我在这里想念什么?
感谢您的帮助。