У меня есть форма Xamarin со списком.В ячейке представления у меня есть метка и запись, которые связаны с двумя свойствами объекта в наблюдаемой коллекции.
Когда я впервые загружаю форму и добавляю в коллекцию, это работает отлично.Затем я вызываю Collection Clear ().Затем я добавляю новый элемент в коллекцию, и запись отображается, а метка - нет.Но если я поменяю метку на Entry, то это сработает.
Также, если я добавлю второй элемент в коллекцию, метка на втором и последующих элементах также отобразится.Это только первый после вызова Clear ().
Я что-то упустил для метки?
Это шаблон данных в форме xaml
<DataTemplate>
<ViewCell>
<Grid HeightRequest="60">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Text="{Binding UpcName}" Grid.Column="0" VerticalOptions="Center" HorizontalOptions="Center"/>
<Entry Keyboard="Numeric"
Text="{Binding Quantity}"
Grid.Column="1"
HorizontalTextAlignment="Center"
WidthRequest="40"
VerticalOptions="Center"
HorizontalOptions="Center"/>
<customControls:ExtendedButton Text="DEL"
Command="{Binding Path=BindingContext.DeleteInventoryCommand, Source={x:Reference UpcListView}}"
CommandParameter="{Binding .}"
Style="{StaticResource SmallDestrutiveButtonStyle}"
Grid.Column="2"
FontSize="12"
VerticalOptions="Center"
HorizontalOptions="Center"/>
</Grid>
</ViewCell>
</DataTemplate>
и это свойство, с которым оно связано
var inventory = new InventoryItemVM
{
Id = upcDetail.Id,
Upc = upcDetail.UPC,
UpcName = upcDetail.Name,
Quantity = 1,
BrandImage = upcDetail.BottleImage
};
Inventories.Add(inventory);
, позже я звоню
Inventories.Clear();
Затем, когда я добавляю инвентарь в следующий раз, на этикетке не отображается имя UpcName.Но добавьте второй, и это делает для этого.Или измените метку для записи, и она будет работать каждый раз.
Любые идеи, пожалуйста?
ОБНОВЛЕНИЕ И ИСПРАВЛЕНИЕ: Если у кого-то еще есть эта проблема, это связано с размером метки (илиточнее НЕ изменяя размеры при изменении контента).
Когда я удалял элемент или очищал список, метка привязывалась к нулевому значению и устанавливала его ширину равной 0. Затем, когда содержимое изменилось, оно не изменило размер (я не вижу способа заставить его изменить размер- так что, если кто-то знает, пожалуйста, дайте мне знать).
Обходным путем было установить FallbackValue на метку (например, Uknown) и установить метки HorizontalOptions для заполнения.Тогда это сработало.
Таким образом, оно всегда связывалось правильно, но не отображалось правильно.