Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

626
Views
CollectionView no se desplaza sin establecer la propiedad de altura

En mi proyecto .Net Maui, estoy usando CollectionView dentro de ControlTemplate. La implementación se ve así:

 <ContentView.ControlTemplate> <ControlTemplate> <Grid> <Grid.RowDefinitions> <RowDefinition Height="50" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <SearchBar x:Name="ObjectSearchBar" Grid.Row="0" IsSpellCheckEnabled="False" Keyboard="Text" Placeholder="{TemplateBinding SearchBarPlaceholderText}" TextChanged="ObjectSearchBar_TextChanged" /> <CollectionView x:Name="ObjectResultView" Grid.Row="1" Margin="10,10,10,10" ItemSizingStrategy="MeasureAllItems" ItemTemplate="{StaticResource templateSelector}" ItemsLayout="VerticalList" ItemsSource="{TemplateBinding DataSource}" SelectionChanged="ObjectResultView_SelectionChanged" SelectionMode="Single"> </CollectionView> </Grid> </ControlTemplate> <ContentView.ControlTemplate>

Estoy usando este ContentView dentro de una ContentPage. La página contiene 2 StackLayouts y su implementación se ve así:

 <ContentPage.Content> <Grid> <StackLayout HorizontalOptions="FillAndExpand" IsVisible="{Binding AddNewSectionIsVisible, Converter {converter:InvertedBoolConverter}}" Orientation="Vertical" VerticalOptions="FillAndExpand"> <controls:ObjectSearchControl DataSource="{Binding DataSource}" FilterChangedCommand="{Binding FilterChangedCommand}" HorizontalOptions="FillAndExpand" ObjectSelectedCommand="{Binding SelectedCommand}" SearchBarPlaceholderText="ABC" VerticalOptions="FillAndExpand" /> </StackLayout> <StackLayout HorizontalOptions="FillAndExpand" IsVisible="{Binding AddNewSectionIsVisible}" Orientation="Vertical" Style="{StaticResource rootStackLayout}" VerticalOptions="Center"> .... </StackLayout> </Grid> </ContentPage.Content>

Solo se muestra uno de los StackLayouts cuando aparece la página.

Entonces, si configuro la altura de la segunda fila en un valor fijo o configuro la altura de CollectionView en un valor fijo, el desplazamiento funciona bien. Pero si uso un "*" o "Auto" para la definición de altura de la segunda fila, CollectionView ya no se desplaza.

Por favor, ¿alguien puede ayudarme en este caso? También intenté usar ScrollViews, configurando VerticalOptions de Stacklayouts o Grid en "FillAndExpand" como se describe en la documentación de MS, pero nada parece funcionar para mí.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Creo que la lógica de diseño no se dio cuenta de que la vista de colección debería desplazarse.


INTENTO DE ARREGLO #1

Prueba estos 2 cambios:

 <ContentPage.Content> <!-- 1) "*": make sure row 0 takes all vertical space. --> <Grid RowDefinitions="*"> <!-- 2) remove the surrounding StackLayout, to simplify layout logic. --> <controls:ObjectSearchControl IsVisible="{Binding AddNewSectionIsVisible, Converter {converter:InvertedBoolConverter}}" DataSource="{Binding DataSource}" FilterChangedCommand="{Binding FilterChangedCommand}" HorizontalOptions="FillAndExpand" ObjectSelectedCommand="{Binding SelectedCommand}" SearchBarPlaceholderText="ABC" VerticalOptions="FillAndExpand" />

PRUEBA SI #1 NO FUNCIONÓ

Si lo anterior no ayudó, entonces haga esta prueba:

 <controls:ObjectSearchControl IsVisible="True" ... and set the other stacklayout to `IsVisible="False"`.

Es decir, como prueba, fuerce que el control sea visible antes de que se llame a InitializeComponent desde el constructor. Esto debería hacer que CollectionView se marque correctamente como desplazamiento.

Se necesitan los resultados de esta prueba para saber qué enfoque tomar a continuación.


INTENTO DE ARREGLO #2 TBD

Si el n.º 1 no ayudó, se debe a que, cuando se diseñó la página por primera vez, CollectionView no se marcó como si necesitara desplazarse.

Esto puede deberse a la propiedad dinámica IsVisible o al diseño que se produjo antes de que DataSource tuviera contenido.

Es un error sutil en CollectionView, que se ha visto en otras circunstancias.

TBD: investigue las preguntas y respuestas anteriores para decidir la forma más fácil de solucionarlo.

over 4 years ago · Santiago Trujillo Report

0

Al refactorizar el diseño, encontré una solución para mi problema.

Reemplacé todos los StackLayouts a través de Grids y agregué ScrollView en mi control. Parece que la razón de mi problema ha sido el diseño complejo.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!