-
Notifications
You must be signed in to change notification settings - Fork 8
/
MainPage.xaml
93 lines (93 loc) · 7.51 KB
/
MainPage.xaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:dxco="clr-namespace:DevExpress.Maui.Controls;assembly=DevExpress.Maui.Controls"
xmlns:dxcv="clr-namespace:DevExpress.Maui.CollectionView;assembly=DevExpress.Maui.CollectionView"
xmlns:dxe="clr-namespace:DevExpress.Maui.Editors;assembly=DevExpress.Maui.Editors"
xmlns:dx="clr-namespace:DevExpress.Maui.Core;assembly=DevExpress.Maui.Core"
xmlns:viewModels="clr-namespace:BottomSheetFilterUI.ViewModel"
xmlns:model="clr-namespace:BottomSheetFilterUI.Model"
xmlns:local="clr-namespace:BottomSheetFilterUI"
xmlns:ios="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;assembly=Microsoft.Maui.Controls"
ios:Page.UseSafeArea="true"
Style="{StaticResource pageStyle}"
x:Class= "BottomSheetFilterUI.MainPage">
<ContentPage.Behaviors>
<dx:SystemBarBehavior AndroidStatusBarBackground="{dx:ThemeColor Surface}" />
</ContentPage.Behaviors>
<ContentPage.Resources>
<local:IsFilterEmptyConverter x:Key="isFilterEmptyConverter"/>
</ContentPage.Resources>
<ContentPage.BindingContext>
<viewModels:MainViewModel/>
</ContentPage.BindingContext>
<Grid RowDefinitions="Auto, *">
<dxe:ChipGroup IsMultiline="False" ChipTap="OnFilterChipGroupTap" x:Name="filterChipGroup" Background="Transparent">
<dxe:Chip Text="Subject ▼">
<dxe:Chip.Triggers>
<DataTrigger Binding="{Binding Source={x:Reference subjectRadioListItem}, Path=FilterModel.SelectedFilterValue, Converter={StaticResource isFilterEmptyConverter}}" Value="False" TargetType="dxe:Chip">
<Setter Property="Text" Value="{Binding Source={x:Reference subjectRadioListItem}, Path=FilterModel.SelectedFilterValue.DisplayText, StringFormat='{0} ▼'}"/>
</DataTrigger>
</dxe:Chip.Triggers>
</dxe:Chip>
<dxe:Chip Text="City ▼">
<dxe:Chip.Triggers>
<DataTrigger Binding="{Binding Source={x:Reference cityCheckedListItem}, Path=FilterModel.SelectedFilterValues.Count, Converter={StaticResource isFilterEmptyConverter}}" Value="False" TargetType="dxe:Chip">
<Setter Property="Text" Value="{Binding Source={x:Reference cityCheckedListItem}, Path=FilterModel.SelectedFilterValues.Count, StringFormat='City ({0}) ▼'}"/>
</DataTrigger>
</dxe:Chip.Triggers>
</dxe:Chip>
<dxe:Chip Text="Tutor ▼">
<dxe:Chip.Triggers>
<DataTrigger Binding="{Binding Source={x:Reference tutorCheckedListItem}, Path=FilterModel.SelectedFilterValues.Count, Converter={StaticResource isFilterEmptyConverter}}" Value="False" TargetType="dxe:Chip">
<Setter Property="Text" Value="{Binding Source={x:Reference tutorCheckedListItem}, Path=FilterModel.SelectedFilterValues.Count, StringFormat='Tutor ({0}) ▼'}"/>
</DataTrigger>
</dxe:Chip.Triggers>
</dxe:Chip>
</dxe:ChipGroup>
<dxcv:DXCollectionView ItemsSource="{Binding Tutors}" x:Name="tutorsCollection" ItemSpacing="10" Grid.Row="1">
<dxcv:DXCollectionView.ItemTemplate>
<DataTemplate x:DataType="{x:Type model:Tutor}">
<dx:DXBorder Style="{StaticResource cardStyle}" Margin="10,0" HeightRequest="90">
<Grid ColumnDefinitions="Auto,Auto, *,Auto" RowSpacing="0" RowDefinitions="Auto,Auto" BackgroundColor="Transparent">
<dx:DXImage Source="{Binding AvatarPath}" HeightRequest="90" WidthRequest="90" Aspect="AspectFill" Grid.RowSpan="2">
<dx:DXImage.Clip>
<RoundRectangleGeometry Rect="0,0,90,90"/>
</dx:DXImage.Clip>
</dx:DXImage>
<Label Text="{Binding FullName}" FontSize="16" FontAttributes="Bold" Margin="10,10,0,0" Grid.Column="1" Grid.ColumnSpan="2"/>
<Label Text="{Binding Rating, StringFormat='{0:f1} ⭐'}" Style="{StaticResource paleLabelStyle}" Margin="10,10,10,0" Grid.Column="3"/>
<Label Text="{Binding Subject}" VerticalOptions="End" Margin="10,0,0,10" Grid.Column="1" Grid.Row="1"/>
<Label Text="{Binding City, StringFormat=' • {0:m}'}" VerticalOptions="End" Margin="0,0,0,10" Grid.Column="2" Grid.Row="1"/>
<Label Text="{Binding HourRate, StringFormat='{0:c0}/h'}" VerticalOptions="End" Margin="10,0,0,10" Grid.Column="3" Grid.Row="1"/>
</Grid>
</dx:DXBorder>
</DataTemplate>
</dxcv:DXCollectionView.ItemTemplate>
</dxcv:DXCollectionView>
<dxco:BottomSheet x:Name="filterBottomSheet">
<Grid ColumnDefinitions="*,*" RowDefinitions="Auto,*">
<dx:DXButton Content="Reset" Command="{Binding Source={x:Reference tutorsCollection}, Path=FilteringContext.ResetFilterCommand}" HorizontalOptions="End" Style="{StaticResource bottomSheetButton}" Margin="0,20,20,20" Grid.Column="1"/>
<dxco:TabView x:Name="filterTabView" HeaderPanelBackgroundColor="Transparent" Grid.Row="1" Grid.ColumnSpan="2" Margin="0,10,0,0" ItemHeaderTapped="FilterTabHeaderTapped" HeaderPanelPadding="0" ItemHeaderPadding="0" HeaderPanelMinHeight="30">
<dxco:TabViewItem HeaderText="Subject" HeaderWidth="*" HeaderPadding="0,0,0,20">
<Grid RowDefinitions="Auto,*">
<dx:DXBorder Grid.ColumnSpan="2" ZIndex="1000"/>
<dxe:FilterRadioListItem x:Name="subjectRadioListItem" Context="{Binding Source={x:Reference tutorsCollection}, Path=FilteringContext}" Margin="0,-12,0,0" FieldName="Subject" ShowSearchPanel="False" Grid.Row="1" />
</Grid>
</dxco:TabViewItem>
<dxco:TabViewItem HeaderText="City" HeaderWidth="*" HeaderPadding="0,0,0,20">
<Grid ColumnDefinitions="*,*" RowDefinitions="Auto,*" >
<dx:DXBorder Grid.ColumnSpan="2" ZIndex="1000" />
<dxe:FilterCheckedListItem x:Name="cityCheckedListItem" Context="{Binding Source={x:Reference tutorsCollection}, Path=FilteringContext}" FieldName="City" ShowSearchPanel="False" Grid.ColumnSpan="2" Grid.Row="1" Margin="0,-12,0,0"/>
</Grid>
</dxco:TabViewItem>
<dxco:TabViewItem HeaderText="Tutor" HeaderWidth="*" HeaderPadding="0,0,0,20">
<Grid ColumnDefinitions="*,*" RowDefinitions="Auto,*" >
<dx:DXBorder Grid.ColumnSpan="2" ZIndex="1000" />
<dxe:FilterCheckedListItem x:Name="tutorCheckedListItem" Context="{Binding Source={x:Reference tutorsCollection}, Path=FilteringContext}" FieldName="FullName" ShowSearchPanel="True" ShowValueCounts="False" Grid.ColumnSpan="2" Grid.Row="1" Margin="0,-12,0,0"/>
</Grid>
</dxco:TabViewItem>
</dxco:TabView>
</Grid>
</dxco:BottomSheet>
</Grid>
</ContentPage>