в представлении моей коллекции я показываю стек внизу:
<CollectionView SelectionMode = "Single" VerticalOptions = "FillAndExpand" ItemsSource = "{Binding WifiHotSpots}">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType = "Models:WifiSelectionModel">
<Grid Padding = "10">
<Grid.RowDefinitions>
<RowDefinition Height = "50"></RowDefinition>
<RowDefinition Height = "50"></RowDefinition>
</Grid.RowDefinitions>
<Grid.GestureRecognizers>
<TapGestureRecognizer Command = "{Binding BindingContext.ClickCommand, Source = {x:Reference WifiPageViewPage}}" CommandParameter = "{Binding .}"/>
</Grid.GestureRecognizers>
<Label Grid.Row = "0" Text = "{Binding Name}" FontAttributes = "Bold" />
<StackLayout IsVisible = "{Binding IsActive}" Grid.Row = "1" BackgroundColor = "Grey">
<Label Text = "Network pass:"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width = "*"/>
<ColumnDefinition Width = "100"/>
</Grid.ColumnDefinitions>
<Entry IsPassword = "True" Text = "{Binding NetworkPass}" Grid.Column = "0"/>
<Button Command = "{Binding BindingContext.ConnectCommand, Source = {x:Reference WifiPageViewPage}}" Margin = "0,-10,0,0" Grid.Column = "1" TextColor = "Black" BackgroundColor = "White" Text = "connect"/>
</Grid>
</StackLayout>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Для свойства IsVisible установлена привязка. Я установил для него значение true или false из кода mvvm. Это работает (вроде как), когда макеты появляются и исчезают, но всегда занимают место. Что бы это могло быть?
Спасибо!
Есть проблема с IsVisible
, вы можете установить для него значение Collapsed
через Xaml только в данный момент, хотя Microsoft заявляет, что установка значения false не сохранит пространство.
Попробуй это:
<StackLayout IsVisible = "{Binding IsActive}" HeightRequest = "{OnPlatform iOS=-1,Default=1}" ...
Или это вместе:
<Grid.RowDefinitions>
<RowDefinition Height = "50"></RowDefinition>
<RowDefinition Height = "Auto"></RowDefinition>
</Grid.RowDefinitions>
<StackLayout IsVisible = "{Binding IsActive}" HeightRequest = "50" .../>
Вы нацеливаетесь. нет8? Я проверю это позже и сообщу вам
Способы сделать это:
<VerticalStackLayout>
<SomeView IsVisble = "{Binding SomeProperty}"..
<AnotherView>
Верхний вид будет сталкивать все вниз, когда оно видно, и подтягивать вверх, когда оно невидимо.
<Grid RowDefinitions "*,Auto"
<SomeView IsVisible = "SomeProperty" Grid.Row = "1"..
<AnotherView>
Внизу страницы вы увидите строку с вашим представлением, которая будет выдвигать все вверх, когда оно отображается, а другое представление будет занимать все пространство, когда оно не отображается.
Обратите внимание: я нигде не указываю «высоту».
Эта часть вашего кода займет 50 единиц вашего представления, независимо от видимости содержащихся в нем представлений.
<RowDefinition Height = "50"></RowDefinition>
Я советую вам переключить Grid с помощью UpperStackLayout, прежде чем пытаться использовать Grid. (Значит, используйте первое решение)
здравствуйте, к сожалению, свернутого файла не существует, и два других решения его не исправляют