首页 > 解决方案 > 数据绑定 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 ,它没有被渲染,这向我证明没有应用模板。这不应该像写的那样工作吗?我在这里想念什么?

我感谢任何帮助。

标签: xamldata-bindinguwp

解决方案


推荐阅读