xaml - 数据绑定 ItemsControl
问题描述
我正在尝试使用 UWP 编写纸牌游戏,但又遇到了另一个绊脚石。在我的 ViewModel 中,我有一个名为 PlayersList 的属性。PlayersList 包含 XPosition 和 YPosition 属性,它们旨在成为每个玩家对象的 Canvas 上的绝对位置。我的 UI 中有以下代码:
<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 ,它没有被渲染,这向我证明没有应用模板。这不应该像写的那样工作吗?我在这里想念什么?
我感谢任何帮助。
解决方案
推荐阅读
- javascript - 使用模块级 const 创建单例 - 打字稿
- javascript - 找不到“未定义”的样式
- r - 更新后恢复 R 包的优雅方法
- hdf5 - 删除表不会释放 pytables 中的磁盘空间
- sql-server - 在 SQL Server 和 PostgreSQL 中兼容的递归 CTE
- react-native - 在反应功能组件中反应本机表单电子邮件和密码验证
- python - AttributeError:“生成器”对象没有“附加”属性
- java - 如何覆盖抽象方法并使用变量而不将它们公开
- docker - Docker 中的 MQClient
- go - Golang OpenGL 构建约束