Впервые на xamarin. Как выбрать элемент из гибкого макета, который можно привязать, аналогично выбору элемента из списка? Спасибо всем.
ListView работал отлично, но я пытался перейти от Listview к FlexLayout.
Вот код с логикой c из представления списка. не был уверен, с чего начать для flexlayout
async void TypeListSelected(object objector, SelectedItemChangedEventArgs eventor)
{
object type = eventor.SelectedItem;
if (type == null)
return;
await Navigation.PushAsync(new EntryPage(new EntryViewModel(type)));
TypesListView.SelectedItem = null;
}
Вот страница xaml с новым макетом flex и жестом касания
<FlexLayout x:Name="FlexTypes"
Wrap="Wrap"
Direction="Row"
HorizontalOptions="FillAndExpand"
JustifyContent="SpaceEvenly"
BindableLayout.ItemsSource="{Binding TypesCollection}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<StackLayout Padding="0, 0, 0, 25">
<Frame x:Name="FrameTypes" HasShadow="False"
WidthRequest="125"
BorderColor="#C0C0C0">
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="TypeListSelected"></TapGestureRecognizer>
</Frame.GestureRecognizers>
<StackLayout x:Name="LayoutTypesList">
<Label>
<Label.FormattedText>
<FormattedString>
<Span FontSize="Subtitle" Text="{Binding Title}"
FontAttributes="Bold"></Span>
</FormattedString>
</Label.FormattedText>
</Label>
<Label FontSize="Small" Text="{Binding Version}"
TextColor="#LELELE"></Label>
<Label Text="{Binding Description}" FontSize="Body"
VerticalOptions="CenterAndExpand"></Label>
<Label FontSize="Caption"
VerticalOptions="CenterAndExpand"
TextColor="#COCOCO">
<Label.FormattedText>
<FormattedString>
<Span Text="{Binding fDepartment}"></Span>
<Span Text="{Binding pType}"></Span>
</FormattedString>
</Label.FormattedText>
</Label>
</StackLayout>
</Frame>
</StackLayout>
</DataTemplate>
</BindableLayout.ItemTemplate>
</FlexLayout>
Вот моя ViewModel
public ObservableCollection<TypeModel> TypesCollection { get; set; }
public Command LoadTypesCommand { get; set; }
public TypesViewModel()
{
Title = "Browse Types";
TypesCollection = new ObservableCollection<TypeModel>();
LoadTypesCommand = new Command(async () => await ExecuteLoadTypesCommand());
}
async Task ExecuteLoadTypesCommand()
{
if (IsBusy)
return;
IsBusy = true;
try
{
TypesCollection.Clear();
var api = await DataSource.GetTypesApi(true);
foreach (var i in api)
{
TypesCollection.Add(i);
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
finally
{
IsBusy = false;
}
}