Я пытаюсь открыть дочерний диалог с обратным вызовом родительского элемента. Я могу заставить его работать, если у меня нет параметров от дочернего элемента, передаваемых обратно родительскому, но когда я пытаюсь передать логическое значение от дочернего элемента к родительскому, я получаю ошибку времени компиляции.
Лучший перегруженный метод Add «name» для инициализатора коллекции имеет несколько недопустимых аргументов.
Теперь их немного подробности об этой реализации, которые играют роль в этой трудности.
Я использую Blazor (Net 5) и компоненты Radzen. В частности, этот.
Вторым параметром Dialog OpenAsync является словарь , где строковые значения — это имена параметров дочернего элемента, а объект, конечно, значение, такое как строка или даже сложный объект.
Однако я пробую что-то новое, поскольку мой «объект» — это EventCallback, который РАБОТАЕТ без каких-либо дополнительных параметров, но с параметрами не кажется, я не очень хорошо сочетаюсь с компилятор.
Рабочий обратный вызов без параметров
Родитель
var retval = await DialogService.OpenAsync($"Subscription Management",
new Dictionary() { { nameof(ManageSubscriptionDialog.SubscriptionStateChanged), UpdateSubscription } },
new DialogOptions() { Width = "600px", Height = "auto" });
private EventCallback UpdateSubscription => new(null, (Action)(async () =>
{
//do stuff
}));
Ребенок
[Parameter]
public EventCallback SubscriptionStateChanged { get; set; }
//throw back to parent to handle selection
await SubscriptionStateChanged.InvokeAsync();
В кроличью нору
Родитель
var retval = await DialogService.OpenAsync($"Subscription Management",
new Dictionary() { { nameof(ManageSubscriptionDialog.SubscriptionStateChanged), UpdateSubscription } },
new DialogOptions() { Width = "600px", Height = "auto" });
private EventCallback UpdateSubscription(bool isCancelled) => new(null, (Action)(async () =>
{
//do stuff
}
Ребенок
[Parameter]
public EventCallback SubscriptionStateChanged { get; set; }
protected async Task InvokeSubscriptionParent(bool isCancelled)
{
//throw back to parent to handle selection
await SubscriptionStateChanged.InvokeAsync(isCancelled);
}
Это даже не скомпилируется, поэтому я добавляю туда немного синтаксического сахара, пытаясь сделать его счастливым.
Родитель
delegate EventCallback DelegateUpdateSubscription(bool isCancelled);
DelegateUpdateSubscription adfasdf = UpdateSubscription;
var retval = await DialogService.OpenAsync($"Subscription Management",
new Dictionary() { { nameof(ManageSubscriptionDialog.SubscriptionStateChanged), adfasdf } },
new DialogOptions() { Width = "600px", Height = "auto" });
private EventCallback UpdateSubscription(bool isCancelled) => new(null, (Action)(async () =>
{
//do stuff
}
Ребенок
[Parameter]
public EventCallback SubscriptionStateChanged { get; set; }
protected async Task InvokeSubscriptionParent(bool isCancelled)
{
//throw back to parent to handle selection
await SubscriptionStateChanged.InvokeAsync(isCancelled);
}
Теперь это компилируется, но во время выполнения, когда открывается диалоговое окно, выдается следующая ошибка.
Невозможно установить свойство SubscriptionStateChanged ' для объекта типа MyApp.Shared.Components.Subscription.ManageSubscriptionDialog. Ошибка: невозможно привести объект типа «DelegateUpdateSubscription» к типу «Microsoft.AspNetCore.Components.EventCallback`1[System.Boolean]».
Я не буду перечислять все, что пробовал, сейчас пытаюсь понять, как передать значение обратно родителю, и я в тупике.
Резюме
Итак, в конце концов, все, что я пытаюсь сделать, это выяснить, как передать параметры из дочернего диалога обратно в родительский.
Обновление
Теперь у меня открывается диалоговое окно без ошибок, просто нужно выяснить последний шаг, когда переменные передаются от дочернего элемента обратно к родительскому.
Здесь я обновил родительскую строку кода. Я передал значение null, хотя следовало передать родительский объект в качестве обработчика обратного вызова.
Неверно
private EventCallback UpdateSubscription => new(null, (Action)
Правильно
private EventCallback UpdateSubscription => new(this, (Action)
Окончательное обновление
Правильно
private EventCallback UpdateSubscription => new(this, (Action)(async (bool www) =>
Подробнее здесь: https://stackoverflow.com/questions/704 ... ows-cs1950
Blazor Dialog EventCallback работает без параметров, но компилятор выдает CS1950 с параметрами ⇐ C#
Место общения программистов C#
1732283282
Anonymous
Я пытаюсь открыть дочерний диалог с обратным вызовом родительского элемента. Я могу заставить его работать, если у меня нет параметров от дочернего элемента, передаваемых обратно родительскому, но когда я пытаюсь передать логическое значение от дочернего элемента к родительскому, я получаю ошибку времени компиляции.
Лучший перегруженный метод Add «name» для инициализатора коллекции имеет несколько недопустимых аргументов.
Теперь их немного подробности об этой реализации, которые играют роль в этой трудности.
Я использую Blazor (Net 5) и компоненты Radzen. В частности, этот.
Вторым параметром Dialog OpenAsync является словарь , где строковые значения — это имена параметров дочернего элемента, а объект, конечно, значение, такое как строка или даже сложный объект.
Однако я пробую что-то новое, поскольку мой «объект» — это EventCallback, который РАБОТАЕТ без каких-либо дополнительных параметров, но с параметрами не кажется, я не очень хорошо сочетаюсь с компилятор.
Рабочий обратный вызов без параметров
[b]Родитель[/b]
var retval = await DialogService.OpenAsync($"Subscription Management",
new Dictionary() { { nameof(ManageSubscriptionDialog.SubscriptionStateChanged), UpdateSubscription } },
new DialogOptions() { Width = "600px", Height = "auto" });
private EventCallback UpdateSubscription => new(null, (Action)(async () =>
{
//do stuff
}));
[b]Ребенок[/b]
[Parameter]
public EventCallback SubscriptionStateChanged { get; set; }
//throw back to parent to handle selection
await SubscriptionStateChanged.InvokeAsync();
В кроличью нору
[b]Родитель[/b]
var retval = await DialogService.OpenAsync($"Subscription Management",
new Dictionary() { { nameof(ManageSubscriptionDialog.SubscriptionStateChanged), UpdateSubscription } },
new DialogOptions() { Width = "600px", Height = "auto" });
private EventCallback UpdateSubscription(bool isCancelled) => new(null, (Action)(async () =>
{
//do stuff
}
[b]Ребенок[/b]
[Parameter]
public EventCallback SubscriptionStateChanged { get; set; }
protected async Task InvokeSubscriptionParent(bool isCancelled)
{
//throw back to parent to handle selection
await SubscriptionStateChanged.InvokeAsync(isCancelled);
}
Это даже не скомпилируется, поэтому я добавляю туда немного синтаксического сахара, пытаясь сделать его счастливым.
[b]Родитель[/b]
delegate EventCallback DelegateUpdateSubscription(bool isCancelled);
DelegateUpdateSubscription adfasdf = UpdateSubscription;
var retval = await DialogService.OpenAsync($"Subscription Management",
new Dictionary() { { nameof(ManageSubscriptionDialog.SubscriptionStateChanged), adfasdf } },
new DialogOptions() { Width = "600px", Height = "auto" });
private EventCallback UpdateSubscription(bool isCancelled) => new(null, (Action)(async () =>
{
//do stuff
}
[b]Ребенок[/b]
[Parameter]
public EventCallback SubscriptionStateChanged { get; set; }
protected async Task InvokeSubscriptionParent(bool isCancelled)
{
//throw back to parent to handle selection
await SubscriptionStateChanged.InvokeAsync(isCancelled);
}
Теперь это компилируется, но во время выполнения, когда открывается диалоговое окно, выдается следующая ошибка.
Невозможно установить свойство SubscriptionStateChanged ' для объекта типа MyApp.Shared.Components.Subscription.ManageSubscriptionDialog. Ошибка: невозможно привести объект типа «DelegateUpdateSubscription» к типу «Microsoft.AspNetCore.Components.EventCallback`1[System.Boolean]».
Я не буду перечислять все, что пробовал, сейчас пытаюсь понять, как передать значение обратно родителю, и я в тупике.
Резюме
Итак, в конце концов, все, что я пытаюсь сделать, это выяснить, как передать параметры из дочернего диалога обратно в родительский.
Обновление
Теперь у меня открывается диалоговое окно без ошибок, просто нужно выяснить последний шаг, когда переменные передаются от дочернего элемента обратно к родительскому.
Здесь я обновил родительскую строку кода. Я передал значение null, хотя следовало передать родительский объект в качестве обработчика обратного вызова.
[b]Неверно[/b]
private EventCallback UpdateSubscription => new(null, (Action)
[b]Правильно[/b]
private EventCallback UpdateSubscription => new(this, (Action)
Окончательное обновление
[b]Правильно[/b]
private EventCallback UpdateSubscription => new(this, (Action)(async (bool www) =>
Подробнее здесь: [url]https://stackoverflow.com/questions/70463828/blazor-dialog-eventcallback-works-without-parameters-but-compiler-throws-cs1950[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия