Es IDialogService bietet Methoden, um dem Nutzer modale Dialoge anzuzeigen, darunter Bestätigungshinweise, Fehlermeldungen, Informationshinweise, Erfolgsbenachrichtigungen und Warnungen sowie Dialoge mit eigenen Inhalten.
Greifen Sie von jeder Komponente aus auf den Dialogdienst zu. In React wird useDialogService() der Baum vom Framework-Dialoganbieter gewrapped; in Blazor wird der Dienst per Property Injection injiziert. Beachten Sie, dass der PowerPortalsPro-Dialogdienst sich vom zugrundeliegenden FluentUI-Dialogdienst unterscheidet.
// useDialogService() gibt die Dialog-API des Frameworks zurück. Verfügbar von jedem
// Funktionskomponente unterhalb der <FluentDialogProvider> an der App montierten
// Root. Das zurückgegebene Objekt stellt asynchrone Show*-Methoden zur Bestätigung frei,
// Info-/Erfolgs-/Warn-/Fehleranzeigenleisten und benutzerdefinierte Dialog-Rendering.
import { useDialogService } from '@powerportalspro/react-fluent';
function MyComponent() {
const dialogs = useDialogService();
// ...
}using IDialogService = PowerPortalsPro.Web.Blazor.Services.IDialogService;
[Inject]
private IDialogService _dialogService { get; set; } = null!;Benutze, ShowConfirmationAsync um den Nutzer mit einer Ja/Nein-Frage zu befragen. Die zurückgegebene DialogResult.Cancelled Eigenschaft ist true , wenn der Benutzer die sekundäre (negative) Option auswählt.
const result = await dialogs.showConfirmationAsync(
'Bist du sicher, dass du diesen Eintrag löschen willst?',
{
title: 'Bestätigen Löschen',
primaryText: 'Ja',
secondaryText: 'Nein',
},
);
if (!result.cancelled) {
// Nutzer bestätigt – fahren Sie mit der Löschung fort
}var result = await _dialogService.ShowConfirmationAsync(
"Bist du sicher, dass du diesen Eintrag löschen willst?",
title: "Bestätigen Löschen",
primaryText: "Ja",
secondaryText: "Nein");
if (!result.Cancelled)
{
// Nutzer bestätigt – fahren Sie mit der Löschung fort
}Verwenden Sie die folgenden Methoden, um Nachrichtendialoge mit nur einer Taste in unterschiedlichen visuellen Stilen anzuzeigen:
ShowInfoAsync — Informationsnachricht mit neutralem Symbol.ShowSuccessAsync — Erfolgsmeldung mit grünem Häkchen.ShowWarningAsync — Warnmeldung mit gelbem Warnsymbol.ShowErrorAsync — Fehlermeldung mit rotem Fehlersymbol.await dialogs.showInfoAsync('Die Operation abgeschlossen.', 'Informationen');
await dialogs.showSuccessAsync('Datensatz erfolgreich gespeichert.', 'Erfolg');
await dialogs.showWarningAsync('Diese Maßnahme kann nicht rückgängig gemacht werden.', 'Warnung');
await dialogs.showErrorAsync('Beim Speichern trat ein Fehler auf.', 'Fehler');await _dialogService.ShowInfoAsync("Die Operation abgeschlossen.", "Informationen");
await _dialogService.ShowSuccessAsync("Datensatz erfolgreich gespeichert.", "Erfolg");
await _dialogService.ShowWarningAsync("Diese Maßnahme kann nicht rückgängig gemacht werden.", "Warnung");
await _dialogService.ShowErrorAsync("Beim Speichern trat ein Fehler auf.", "Fehler");ShowDialogAsync Zeigt eigene Inhalte an, wie ein Formular, einen Picker oder eine Vorschau, und zeigt an, womit der Dialog endet. In Blazor übergeben Sie eine Komponente (oder eine RenderFragmentKomponente); in React geben Sie eine Funktion weiter, die den Inhalt rendert. Setzen PrimaryText Sie und SecondaryText für die Buttons, die der Service zieht, oder lassen Sie beide für Inhalte weg, die eigene zeichnen.
Der Inhalt erhält den Dialog, in dem er angezeigt wird: an IDialogContext in Blazor, empfangen als kaskadenierender Parameter, und a DialogHandle in React, an die Render-Funktion weitergegeben und überall innerhalb useDialogHandle()verfügbar. Verwenden Sie es, um mit einem Wert zu schließen, die Haupttaste zu beenden, die Haupttaste zu aktivieren oder zu deaktivieren oder einzustellen, was die Haupttaste tut. Was diese Aktion zurückgibt, ist das, was der Dialog zurückgibt. Return KeepOpen (KEEP_OPEN in React), um den Dialog offen zu halten, zum Beispiel, solange die Eingabe noch nicht gültig ist.
// Der Inhalt wird dort gerendert, wo die Dialoge gehostet werden, nicht dort, wo er geöffnet wurde. Er kann die Dienste der App nutzen, aber nicht den eigenen Kontext der Seite, also geben Sie weiter, was benötigt wird.
const result = await dialogs.showDialogAsync<string>(
(dialog) => <RenameForm initialName={name} dialog={dialog} />,
{
title: 'Umbenennung',
primaryText: 'Speichern',
secondaryText: 'Stornieren',
},
);
if (!result.cancelled && result.data !== undefined) {
// Der Dialog wurde gespeichert: Verwenden Sie den Namen, den er zurückgegeben hat
}
// RenameForm
function RenameForm({ initialName, dialog }: { initialName: string; dialog: DialogHandle<string> }) {
const [name, setName] = useState(initialName);
dialog.onPrimary(async () =>
name.trim() ? name.trim() : KEEP_OPEN); // Noch nicht gültig: Sag warum und halte den Dialog offen
return <Input value={name} onChange={(_, d) => setName(d.value)} />;
}// Der Inhalt wird dort gerendert, wo die Dialoge gehostet werden, nicht dort, wo er geöffnet wurde. Er kann die Dienste der App nutzen, aber nicht den eigenen Kontext der Seite, also geben Sie weiter, was benötigt wird.
var result = await _dialogService.ShowDialogAsync<RenameDialog>(
options =>
{
options.Title = "Umbenennung";
options.PrimaryText = "Speichern";
options.SecondaryText = "Stornieren";
},
new Dictionary<string, object?> { [nameof(RenameDialog.InitialName)] = name });
if (result.GetData<string>() is { } newName)
{
// Der Dialog wurde gespeichert: Verwenden Sie den Namen, den er zurückgegeben hat
}
// RenameDialog.razor: <FluentTextInput @bind-Value="_name" />
[CascadingParameter] public IDialogContext Dialog { get; set; } = default!;
[Parameter] public string? InitialName { get; set; }
private string? _name;
protected override void OnInitialized()
{
_name = InitialName;
Dialog.OnPrimary = () => Task.FromResult<object?>(string.IsNullOrWhiteSpace(_name)
? IDialogContext.KeepOpen // Noch nicht gültig: Sag warum und halte den Dialog offen
: _name.Trim());
}Öffnet einen Dialog mit einem Formular. Speichern lässt den Dialog offen, bis ein Name eingegeben wird, und bringt ihn dann zur Seite zurück; Abbrechen bringt nichts zurück.
Alle Dialogmethoden akzeptieren optional title und primaryText Parameter. Wenn sie weggelassen werden, werden lokalisierte Standardwerte verwendet. Der Bestätigungsdialog akzeptiert außerdem einen Parameter secondaryText für das Abbrechen-Button-Label.
Alle Methoden geben ein DialogResult Objekt zurück. Für Bestätigungsdialoge überprüfen Sie die Eigenschaft Cancelled , um die Wahl des Nutzers zu bestimmen. Bei Nachrichtendialogen zeigt das Ergebnis an, dass der Dialog geschlossen wurde.
Verwenden Sie die untenstehenden Steuerungen, um den Dialogtitel und die Nachricht anzupassen, und klicken Sie dann auf eine beliebige Taste, um den entsprechenden Dialogtyp zu sehen.
Name | Typ | Default | Beschreibung |
|---|---|---|---|
OpenDialogCount | int | Wie viele Dialoge hat dieser Dienst derzeit offen? |
OpenDialogCountName | Parameter | Typ | Beschreibung |
|---|---|---|---|
ShowConfirmationAsync | string message string title string primaryText string secondaryText | Task<DialogResult> | Zeigt einen Bestätigungsdialog mit den bereitgestellten message und zwei Aktionstasten an, dann wartet auf Der Nutzer wählt eine aus. Die zurückgegebene Eingabe Services.DialogResult ist DialogResult.Cancelled gesetzt auf |
ShowDialogAsync<TComponent> | Action<CustomDialogOptions> configure IDictionary<string, Object> parameters | Task<DialogResult> | Wird in einem Dialog angezeigt |
ShowErrorAsync | string message string title string primaryText | Task<DialogResult> | Zeigt ein Fehler-Dialog mit dem angegebenen message Symbol an und wartet darauf, dass der Benutzer es schließt. |
ShowInfoAsync | string message string title string primaryText | Task<DialogResult> | Zeigt einen Informationsdialog mit dem bereitgestellten message Dialog und wartet darauf, dass der Nutzer ihn abschließt. |
ShowSuccessAsync | string message string title string primaryText | Task<DialogResult> | Zeigt einen erfolgreichen Dialog mit dem bereitgestellten message Dialog und wartet darauf, dass der Nutzer ihn abschließt. |
ShowWarningAsync | string message string title string primaryText | Task<DialogResult> | Zeigt einen Warndialog mit dem bereitgestellten message Bildschirm an und wartet darauf, dass der Benutzer ihn schließt. |
ShowConfirmationAsyncmessage und zwei Aktionstasten an, dann wartet auf Der Nutzer wählt eine aus. Die zurückgegebene Eingabe Services.DialogResult ist DialogResult.Cancelled gesetzt auf ShowDialogAsync<TComponent>ShowErrorAsyncmessage Symbol an und wartet darauf, dass der Benutzer es schließt.ShowInfoAsyncmessage Dialog und wartet darauf, dass der Nutzer ihn abschließt.ShowSuccessAsyncmessage Dialog und wartet darauf, dass der Nutzer ihn abschließt.ShowWarningAsyncmessage Bildschirm an und wartet darauf, dass der Benutzer ihn schließt.Name | Typ | Default | Beschreibung |
|---|---|---|---|
Cancelled | bool | False | Erhält einen Wert, der angibt, ob der Dialog abgebrochen wurde (z. B. hat der Benutzer ihn ohne Bestätigung abgelehnt). |
Data | Object? | Optionale Datennutzlast, die vom Dialog beim Schließen zurückgegeben wird. |
CancelledDataName | Parameter | Typ | Beschreibung |
|---|---|---|---|
Cancel | Object data | DialogResult | Erzeugt ein Services.DialogResult Ergebnis, das ein abgebrochenes Ergebnis darstellt und optional eine Datennutzlast trägt. |
GetData<T> | T? | Der Wert, mit dem der Dialog geschlossen wurde, als | |
Ok<T> | T result | DialogResult | Erzeugt ein Services.DialogResult Ergebnis, das ein bestätigtes Ergebnis darstellt und als Datennutzlast transportiert result wird. |
TryGetData<T> | out T value | bool | Liest den Wert, mit dem der Dialog geschlossen wurde, als |
CancelServices.DialogResult Ergebnis, das ein abgebrochenes Ergebnis darstellt und optional eine Datennutzlast trägt.GetData<T>Ok<T>Services.DialogResult Ergebnis, das ein bestätigtes Ergebnis darstellt und als Datennutzlast transportiert result wird.TryGetData<T>Name | Typ | Default | Beschreibung |
|---|---|---|---|
PreventDismissOnEscape | bool | False | Ob Escape daran gehindert wird, den Dialog zu schließen. Standard. false |
PrimaryText | string? | Das Label des Hauptknopfs. Der Service zieht den Knopf, wenn dieser eingestellt ist; lassen Sie beide so und CustomDialogOptions.SecondaryText nicht eingestellt für Inhalte, die eigene Buttons zeichnen. Was der Button ist Does liegt bei IDialogContext.OnPrimary. | |
SecondaryText | string? | Das Etikett des sekundären Knopfs. Der Dienst zieht den Knopf, wenn diese eingestellt ist, und storniert dann Der Dialog. | |
ShowDismiss | bool | True | Ob der Header einen Schließknopf anzeigt. Standard. true |
Title | string? | Der Titel des Dialogs, der in der Kopfzeile angezeigt wird. Lass ihn weg, um einen Dialog ohne Dialog zu haben. | |
Width | string? | Die Breite des Dialogs entspricht einer CSS-Länge, z. B. |
PreventDismissOnEscapefalsePrimaryTextCustomDialogOptions.SecondaryText nicht eingestellt für Inhalte, die eigene Buttons zeichnen. Was der Button ist Does liegt bei IDialogContext.OnPrimary.SecondaryTextShowDismisstrueTitleWidthName | Typ | Default | Beschreibung |
|---|---|---|---|
OnPrimary | Func<Task<Object>>? | Läuft, wenn der vom Service gezogene Hauptknopf gedrückt wird. Das Ergebnis ist das, was der Dialog zurückgibt, in DialogResult.Data; zurück, IDialogContext.KeepOpen um den Dialog offen zu halten Stattdessen. Deaktiviert, schließt der Button den Dialog ohne Daten. Während er läuft, sind die Tasten deaktiviert und Escape schließt den Dialog nicht ab (auf dem Blazor-Server, von einem Moment nach dem Klick: Der Block erreicht den Browser eine Hin- und Rückfahrt später). Wenn er geworfen wird, der Fehler wird protokolliert, der Dialog bleibt offen und eine allgemeine Fehlermeldung wird darüber angezeigt; für Fehler, die ein Nutzer beheben kann, sag selbst, was schiefgelaufen ist, und gib es zurück IDialogContext.KeepOpen. | |
PrimaryEnabled | bool | Ob der vom Service gezogene Hauptknopf gedrückt werden kann, z. B. nur wenn eine erforderliche Wahl ist gemacht. Standard true. |
OnPrimaryDialogResult.Data; zurück, IDialogContext.KeepOpen um den Dialog offen zu halten Stattdessen. Deaktiviert, schließt der Button den Dialog ohne Daten. Während er läuft, sind die Tasten deaktiviert und Escape schließt den Dialog nicht ab (auf dem Blazor-Server, von einem Moment nach dem Klick: Der Block erreicht den Browser eine Hin- und Rückfahrt später). Wenn er geworfen wird, der Fehler wird protokolliert, der Dialog bleibt offen und eine allgemeine Fehlermeldung wird darüber angezeigt; für Fehler, die ein Nutzer beheben kann, sag selbst, was schiefgelaufen ist, und gib es zurück IDialogContext.KeepOpen.PrimaryEnabledtrue.Name | Parameter | Typ | Beschreibung |
|---|---|---|---|
CancelAsync | Task | Schließt den Dialog als abgebrochen, was zurückkehrt Cancel(System.Object). | |
CloseAsync | Object data | Task | Schließt den Dialog, der mit datazurückkehrtDialogResult.Ok`<T>(`<U>). |
CancelAsyncCancel(System.Object).CloseAsyncdatazurückkehrtDialogResult.Ok`<T>(`<U>).