JsonDork
JsonDork

Reputation: 718

Xamarin: Change value of GridItemLayout in codebehind

 <CollectionView Grid.Row="2" Grid.Column="0" x:Name="collectionViewItemsLayout" ItemsSource="{Binding BaseCustomersCards}"  ItemTemplate="{StaticResource CustomerCardTemplateSelector}" >
                <CollectionView.ItemsLayout>
                    <GridItemsLayout Orientation="Vertical" Span="5" />
                </CollectionView.ItemsLayout>
            </CollectionView>

I've got this collectionview but am attempting to change the span for phone-tablet. Default is 5 but phone value should be 3.

  var idiom = DeviceInfo.Idiom;
            if (idiom == DeviceIdiom.Phone)
            {
                collectionViewItemsLayout.SetValue(GridItemsLayout.SpanProperty, 3);
            }

I made this in the code-behind to change it, the method triggers but doesn't change anything. I've tried to put the 3 as a string and as pure value. I've also attempted to put the x:name in the attribute but it cannot go there.

Upvotes: 0

Views: 867

Answers (1)

JsonDork
JsonDork

Reputation: 718

Works by creating a new GridItem and setting it instead

 if (idiom == DeviceIdiom.Phone)
            {
                var grid = new GridItemsLayout(ItemsLayoutOrientation.Vertical)
                {
                    Span = 3,
                };

                collectionViewItemsLayout.SetValue(CollectionView.ItemsLayoutProperty, grid);
            }

Upvotes: 2

Related Questions