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.

¿Puedes colocar un CarouselView dentro de otro CarouselView?

Me gustaría tener 2 ContentViews en el primer CarouselView, pero luego quiero colocar otro CarouselView en el segundo ContentView.

El siguiente código me da un “Valor no puede ser nulo”. Cuando elimino el ItemTemplate del segundo CarouselView se construye, pero luego obtengo esto en el segundo ContentView (ver imagen).

(Ver imagen en el original en inglés)

<carouselview x:name="outerCarousel">
        <carouselview.itemssource>
            <x:array type="{x:Type ContentView}">
                <contentview>
                    <contentview.content>
                        <frame backgroundcolor="Red">
                    </contentview.content>
                </contentview>
                <contentview>
                    <contentview.content>
                        <frame>
                            <carouselview x:name="innerCarousel" margin="50">
                                <carouselview.itemssource>
                                    <x:array type="{x:Type ContentView}">
                                        <contentview>
                                            <contentview.content>
                                                <frame backgroundcolor="Green">
                                            </contentview.content>
                                        </contentview>
                                        <contentview>
                                            <contentview.content>
                                                <frame backgroundcolor="Blue">
                                            </contentview.content>
                                        </contentview>
                                    </x:array>
                                </carouselview.itemssource>
                                <carouselview.itemtemplate>
                                    <datatemplate>
                                        <contentview content="{Binding .}"></contentview>
                                    </datatemplate>
                                </carouselview.itemtemplate>
                            </carouselview>

                    </contentview.content>
                </contentview>
            </x:array>
        </carouselview.itemssource>
        <carouselview.itemtemplate>
            <datatemplate>
                <contentview content="{Binding .}"></contentview>
            </datatemplate>
        </carouselview.itemtemplate>
    </carouselview>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código proporcionado es que el segundo CarouselView se está agregando como un elemento del arreglo ItemsSource del primer CarouselView, que espera solo ContentViews. Esto causa un error de valor nulo porque el segundo elemento no es un ContentView, sino un CarouselView.

    Para lograr el diseño deseado, deberá envolver el segundo CarouselView dentro de un ContentView y agregar ese ContentView como el segundo elemento en el arreglo ItemsSource del primer CarouselView. Aquí hay un ejemplo de fragmento de código:

    <carouselview x:name="outerCarousel">
        <carouselview.itemssource>
            <x:array type="{x:Type ContentView}">
                <!-- Primer ContentView -->
                <contentview>
                    <contentview.content>
                        <frame backgroundcolor="Red">
                    </contentview.content>
                </contentview>
    
                <!-- Segundo ContentView con un CarouselView dentro -->
                <contentview>
                    <contentview.content>
                        <carouselview x:name="innerCarousel" margin="50">
                            <carouselview.itemssource>
                                <x:array type="{x:Type ContentView}">
                                    <contentview>
                                        <contentview.content>
                                            <frame backgroundcolor="Green">
                                        </contentview.content>
                                    </contentview>
                                    <contentview>
                                        <contentview.content>
                                            <frame backgroundcolor="Blue">
                                        </contentview.content>
                                    </contentview>
                                </x:array>
                            </carouselview.itemssource>
                            <carouselview.itemtemplate>
                                <datatemplate>
                                    <contentview content="{Binding .}"></contentview>
                                </datatemplate>
                            </carouselview.itemtemplate>
                        </carouselview>
                    </contentview.content>
                </contentview>
            </x:array>
        </carouselview.itemssource>
    
        <carouselview.itemtemplate>
            <datatemplate>
                <contentview content="{Binding .}"></contentview>
            </datatemplate>
        </carouselview.itemtemplate>
    </carouselview>
    

    Este código primero agrega un ContentView con un marco rojo y luego un segundo ContentView que contiene un CarouselView con dos ContentViews con marcos verdes y azules.

    Tenga en cuenta que el segundo CarouselView tiene su propio ItemTemplate, que es necesario para vincular los elementos de ItemsSource a ContentView.

Comments are closed.