试图将对象添加到我的 canvas 但 mycanvas.children.add() 的功能不起作用,还有其他方法吗?

Trying to add the objects to my canvas but the function of mycanvas.children.add() doesnt work,any other way?

我用 rectangles 试过了,它起作用了,但我需要处理

对我的班级很重要,因为他们继承自他。我如何将对象添加到我的 canvas

如果他们不是 rectangle?

public sealed partial class MainPage : Page
{
    System.Collections.Generic.List<Piece> arr_Enemy = new System.Collections.Generic.List<Piece>();
    public MainPage()
    {
        this.InitializeComponent();
        Player _player = new Player(50,80, 50, 50, new BitmapImage(new Uri("ms-appx:///Assets/Background.jpg")));
        MyCanvas.Background = new ImageBrush
        {
            ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/Background.jpg"))
        };
        MyCanvas.Children.Add(_player);
        for (int i = 0; i < arr_Enemy.Count; i++)
        {
            arr_Enemy[i] = new Piece(rnd.Next(250), rnd.Next(500), 150, 120, new BitmapImage(new Uri("ms-appx:///Assets/enemy.GIF")));
            MyCanvas.ChildrenTransitions.Add(arr_Enemy[i])
        }
    }
}

您只能将 UIElements 添加到 CanvasChildren 集合中,就像您只能将 strings 添加到 List<string> 中一样。

如果你Player是某种控件,它应该继承自UIElement

如果 Player 是某种模型,您可以使用带有 Canvas 面板的 ItemsControl 在您的视图中显示模型:

<ItemsControl x:Name="ic" ItemsSource="{x:Bind ListOfPlayers}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate x:DataType="{x:Bind local:Player}">
            <TextBlock Text="I'm a player..." />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

然后您可以将玩家添加到 ListOfPlayers 源集合中。