Creación y enlace de botones dinámicamente en un WrapPanel

En este escenario, una serie de recursos se envían a ViewModel.

El objetivo es mostrar estos recursos como botones en un WrapPanel en la vista.

En este momento, estoy haciendo esto usando el código C # a continuación. Sin embargo, me gustaría hacer esto en el lado de Xaml. Finalmente, me gustaría usar DataTemplates para formatear los botones con otras propiedades de la clase de recursos.

¿Cuál es la mejor manera de abordar esto? Gracias por adelantado.

    public void SetResources(Resource[] resources)
    {
        WrapPanel panel = this.View.ResourcesPanel;
        panel.Children.Clear();
        foreach(Resource resource in resources)
        {
            var button = new Button
            {
                Tag = resource.Id,
                Content = resource.Content,
                Width = 300,
                Height = 50
            };
            button.Click += this.OnResourceButtonClick;
            panel.Children.Add(button);
        }
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta