@using MudBlazor @implements IDisposable @if (ViewModel != null) {
@ViewModel.ImageName
@if (ViewModel.IsPreviousImageEnabled) { Previous image } @(ViewModel.OriginalView ? "Show Analysis" : "Show Original")
@if (ViewModel.LearnButtonVisible) { Learn this } @if (ViewModel.IsNextImageEnabled) { Next image } Close
@{ var imageUri = ViewModel.ImageAnalysis?.ToBase64DataUri(); } @if (!string.IsNullOrEmpty(imageUri)) { @ViewModel.ImageName }
}
@code { [CascadingParameter] private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public ErrorPreviewVM? ViewModel { get; set; } private ErrorPreviewVM? _subscribedVm; private bool _disposed; protected override void OnParametersSet() { if (_subscribedVm != ViewModel) { if (_subscribedVm != null) _subscribedVm.PropertyChanged -= OnPropertyChanged; _subscribedVm = ViewModel; if (ViewModel != null) ViewModel.PropertyChanged += OnPropertyChanged; } } private async void OnPropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e) { if (_disposed) return; await InvokeAsync(StateHasChanged); } private void OnPrevious() => ViewModel?.PreviousImageCommand.Execute(null); private void OnNext() => ViewModel?.NextImageCommand.Execute(null); private void OnSwitchView() => ViewModel?.SwitchViewCommand.Execute(null); private async Task OnLearn() { if (ViewModel != null) await ViewModel.Learn(); } private void Close() => MudDialog.Close(); public void Dispose() { _disposed = true; if (_subscribedVm != null) _subscribedVm.PropertyChanged -= OnPropertyChanged; } }