The49.Maui.BottomSheet
The49.Maui.BottomSheet copied to clipboard
handler not showing
<the49:BottomSheet xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="ChangeBoxMobileApp.Views.FilterBottomSheet" xmlns:viewModels="clr-namespace:ChangeBoxMobileApp.ViewModels" x:DataType="viewModels:TransactionFilterViewModel" xmlns:the49="https://schemas.the49.com/dotnet/2023/maui" BackgroundColor="Transparent" Dismissed="FilterBottomSheet_OnDismissed" x:Name="BottomSheet"> the49:BottomSheet.Detents <the49:FullscreenDetent IsDefault="True" /> <the49:ContentDetent /> </the49:BottomSheet.Detents> the49:BottomSheet.Handler/ <Grid > <Frame CornerRadius="50" Margin="0,300,0,0"> <Grid RowDefinitions=".4*,.3*,.2*" >
<VerticalStackLayout>
<Label Text="Select Date Range"
FontAttributes="Bold"
FontSize="Medium"
Margin="0,20,0,0" />
<Label Text="Start Date"
Margin="0,20,0,0"
FontAttributes="Bold"
FontSize="Small" />
<HorizontalStackLayout Margin="-5,0,0,10"
Padding="5"
Spacing="10">
<StackLayout>
<Frame CornerRadius="15"
BorderColor="Gray"
Padding="5"
WidthRequest="100"
HeightRequest="45">
<HorizontalStackLayout>
<Picker x:Name="StartDayPicker"
Title="Day"
HeightRequest="40"
ItemsSource="{Binding StartDayPicker}"
SelectedIndex="{Binding SelectedStartDayIndex}"
Margin="10,0,0,0">
</Picker>
<Label Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</Frame>
</StackLayout>
<StackLayout>
<Frame CornerRadius="15"
BorderColor="Gray"
Padding="5"
WidthRequest="100"
HeightRequest="45">
<HorizontalStackLayout>
<Picker x:Name="StartMonthPicker"
Title="Month"
HeightRequest="40"
Margin="10,0,0,0"
ItemsSource="{Binding StartMonthPicker}"
SelectedIndex="{Binding SelectedStartMonthIndex}">
</Picker>
<Label Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</Frame>
</StackLayout>
<StackLayout>
<Frame CornerRadius="15"
BorderColor="Gray"
Padding="15,5,5,5"
WidthRequest="100"
HeightRequest="45">
<HorizontalStackLayout>
<Picker Title="Year"
ItemsSource="{Binding StartYearPicker}"
SelectedIndex="{Binding SelectedStartYearIndex}"
HeightRequest="40">
</Picker>
<Label Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</Frame>
</StackLayout>
</HorizontalStackLayout>
<Label Text="End Date"
Margin="0,20,0,0"
FontAttributes="Bold"
FontSize="Small" />
<HorizontalStackLayout Margin="-5,0,0,10"
Padding="5"
Spacing="10">
<StackLayout>
<Frame CornerRadius="15"
BorderColor="Gray"
Padding="5"
WidthRequest="100"
HeightRequest="45">
<HorizontalStackLayout>
<Picker Title="Day"
HeightRequest="40"
ItemsSource="{Binding EndDayPicker}"
SelectedIndex="{Binding SelectedEndDayIndex}"
Margin="10,0,0,0">
</Picker>
<Label Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</Frame>
</StackLayout>
<StackLayout>
<Frame CornerRadius="15"
BorderColor="Gray"
Padding="5"
WidthRequest="100"
HeightRequest="45">
<HorizontalStackLayout>
<Picker Title="Month"
HeightRequest="40"
ItemsSource="{Binding EndMonthPicker}"
SelectedIndex="{Binding SelectedEndMonthIndex}"
Margin="10,0,0,0">
</Picker>
<Label Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</Frame>
</StackLayout>
<StackLayout Grid.Column="2"
Grid.Row="1">
<Frame CornerRadius="15"
BorderColor="Gray"
Padding="15,5,5,5"
WidthRequest="100"
HeightRequest="45">
<HorizontalStackLayout>
<Picker Title="Year"
ItemsSource="{Binding EndYearPicker}"
SelectedIndex="{Binding SelectedEndYearIndex}"
HeightRequest="40">
</Picker>
<Label Text="▼"
VerticalOptions="Center" />
</HorizontalStackLayout>
</Frame>
</StackLayout>
</HorizontalStackLayout>
</VerticalStackLayout>
<VerticalStackLayout Grid.Row="2"
VerticalOptions="End"
Margin="0,0,0,0">
<Button Text="Apply Filter"
Style="{StaticResource ButtonText}"
Clicked='Button_OnClicked' />
</VerticalStackLayout>
</Grid>
</Frame>
</Grid>
</the49:BottomSheet> public partial class FilterBottomSheet { private readonly TransactionFilterViewModel _viewModel; public FilterBottomSheet(TransactionFilterViewModel viewModel) { _viewModel = viewModel; InitializeComponent(); BindingContext = viewModel;
}
private async void Button_OnClicked(object? sender, EventArgs e)
{
await _viewModel.ButtonClicked();
await BottomSheet.DismissAsync();
}
private void FilterBottomSheet_OnDismissed(object? sender, DismissOrigin e)
{
var transactionView = (TransactionView)Shell.Current.CurrentPage;
if (transactionView.BindingContext is TransactionViewModel viewModel)
{
viewModel.TransactionPageContentOpacity = 1.0;
}
}
}
[QueryProperty(nameof(TransactionHistoryFilters),nameof(TransactionHistoryFilters))] public partial class TransactionViewModel : ViewModelBase { [ObservableProperty] private TransactionHistoryFilters _transactionHistoryFilters;
private readonly IAlertService _alertService;
private readonly ITransactionService _transactionService;
private readonly IServiceProvider _serviceProvider;
public TransactionViewDataModel TransactionDataViewModel { get; set; } = new();
[ObservableProperty] private object _selectedItem;
[ObservableProperty] private bool _isBusy;
[ObservableProperty] private bool _isTransactionEnable;
private bool _isInitializing;
public TransactionViewModel(INavigator navigator,
IAlertService alertService,
ITransactionService transactionService, IServiceProvider serviceProvider) : base(navigator)
{
_alertService = alertService;
_transactionService = transactionService;
_serviceProvider = serviceProvider;
ToggleFilterCommand = new Command(o => ToggleFilter());
}
public ICommand ToggleFilterCommand { get; }
private double _transactionPageContentOpacity = 1.0;
public double TransactionPageContentOpacity
{
get => _transactionPageContentOpacity;
set
{
_transactionPageContentOpacity = value;
OnPropertyChanged();
}
}
public async Task InitAsync()
{
if (_isInitializing)
return;
_isInitializing = true;
try
{
IsBusy = true;
IsTransactionEnable = false;
TransactionDataViewModel.DashBoardResponse = await _transactionService.GetBalanceAsync();
TransactionDataViewModel.TransactionListViewModels =
await _transactionService.GetAllTransactionsTaskAsync(TransactionHistoryFilters);
IsBusy = false;
IsTransactionEnable = true;
}
catch (Exception ex)
{
await _alertService.ShowAlertAsync("ChangeBox EWallet",
$"Error Navigating to Transaction Page {ex.Message}", "ok");
}
finally
{
_isInitializing = false;
}
}
private async void ToggleFilter()
{
TransactionPageContentOpacity = 0.5;
var page = _serviceProvider.GetRequiredService<FilterBottomSheet>();
page.HasHandle = true;
page.HandleColor = Colors.Red;
await page.ShowAsync();
TransactionPageContentOpacity = 0.5;
}
here my handler not showing please help