es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Colección dinámica de vista con FreshMvvm en Xamarin.Forms

¿Hay alguna forma de generar diseños dinámicos en CollectionView?

Conozco DataTemplateSelector en https://www.xamarinhelp.com/xamarin-forms-datatemplateselector/

y estoy familiarizado con el contenido de FreshMvvm por convención.

¿Puedo agregar objetos a una colección observable y hacer que FreshMvvm resuelva la página de contenido?

<?xml version="1.0" encoding="utf-8"?>
<contentpage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:class="trycollections.Pages.MainPage">

    <collectionview itemssource="{Binding MyItems}">
        <collectionview.itemslayout>
            <griditemslayout span="1" orientation="Vertical"></griditemslayout>
        </collectionview.itemslayout>
        <collectionview.itemtemplate>
            <datatemplate>
                <contentpresenter content="{Binding .}"></contentpresenter>
            </datatemplate>
        </collectionview.itemtemplate>
    </collectionview>

</contentpage>

“`csharp
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;

namespace trycollections.ViewModels
{
public class MainViewModel : FreshMvvm.FreshBasePageModel
{
public ObservableCollection<object> MyItems { get; set; } =
new ObservableCollection

<object>
{
new ItemOneViewModel(),
new ItemTwoViewModel(),
new ItemOneViewModel(),
new ItemOneViewModel(),
new ItemOneViewModel(),
};
}

public class ItemOneViewModel : FreshMvvm.FreshBasePageModel
{
public string ThisIsOneText { get; set; } = $"Hola mundo desde {nameof(ItemOneViewModel)}";
}
public class ItemTwoViewModel : FreshMvvm.FreshBasePageModel
{
public string ThisIsTwoText { get; set; } = $"Hola mundo desde {nameof(ItemTwoViewModel)}";
}
}
“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible generar diseños dinámicos en CollectionView utilizando un ObservableCollection en combinación con FreshMvvm. En el ejemplo de código anterior, se enlaza una ObservableCollection de objetos al CollectionView como ItemsSource. Esto permite agregar nuevos objetos a la colección dinámicamente, lo que hará que el CollectionView se actualice y muestre el nuevo contenido.

    Para generar dinámicamente diferentes diseños para cada objeto en la colección, puedes utilizar un DataTemplateSelector. En el código XAML anterior no se utiliza un DataTemplateSelector, pero se puede agregar para seleccionar diferentes DataTemplates según el tipo de objeto en la colección.

    Alternativamente, puedes enlazar directamente cada objeto a su propia ContentPage utilizando la funcionalidad de FreshMvvm de enlace por convención. En este caso, cada objeto en la colección sería un modelo de vista con su correspondiente vista, y FreshMvvm resolvería automáticamente la ContentPage para cada modelo de vista.

Comments are closed.