Привязка данных, похоже, нарушенаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Привязка данных, похоже, нарушена

Сообщение Anonymous »

Я работаю над дизайнером макетов, думаю о WinForms Designer for Web-Components, и нахожусь в самом начале проекта. Я использую серверное приложение Blazor и, поскольку мне нужно генерировать элементы управления в целом, я использую DynamicComponents. Поскольку мне не нужна слишком большая сложность в реальных компонентах макета, у меня есть базовый класс, который заботится о большинстве распространенных вещей. Кроме того, я создал узел «Выбираемый», позволяющий обнаруживать выбор компонента без необходимости реализовывать это в каждом компоненте.
Когда компонент теперь выбран, я вижу, что значок удаления не отображается. становится включенным, но его отключенное/включенное состояние правильно установлено кодом.
Однако я мог бы вызвать StateHasChanged, и это отобразило бы правильное состояние, но, к сожалению, привело бы к другим проблемам, скорее всего связанным к используемым динамическим компонентам.
Мне удалось воспроизвести свою проблему на очень простом примере, который можно найти здесь:
https://try.mudblazor.com/snippet /QYcIuybXTevcExgs
Здесь я также попытаюсь обрисовать код:

Код: Выделить всё

@inherits LayoutComponentBase

BlazorRepro
@Counter



@Body



@code {
Container? container;
int Counter { get; set; }

protected override void OnAfterRender(bool firstRender)
{
base.OnAfterRender(firstRender);

if (container != null && firstRender)
container.SelectionChanged += OnSelectionChanged;
}

private void OnSelectionChanged()
{
System.Diagnostics.Trace.WriteLine($"Counter incremented to : {++Counter}");
}
}
Это основной компонент. Он генерирует экземпляр Container, который, в свою очередь, предоставляет CascadingValue всем дочерним элементам. Он также регистрируется для события SelectionChanged и увеличивает счетчик при каждом выборе чего-либо (= включение/отключение моей кнопки удаления)

Код: Выделить всё


@ChildContent


@code {

[Parameter]
public RenderFragment? ChildContent { get; set; }

public event Action? SelectionChanged;

public void Select()
{
SelectionChanged?.Invoke();
}
}
Реализация контейнера. Как уже упоминалось, он предоставляет CascadingValue, а также общедоступный метод для получения уведомлений о новом выборе.

Код: Выделить всё

@ChildContent

@code {
[CascadingParameter]
public Container Container { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }

private void Select()
{
Container.Select();
}
}
Реализация Selectable. При нажатии на что-либо вызывается метод Container.Select().

Код: Выделить всё

@page "/"

Index


Click me to select

Наконец, тело MainLayout — оно просто оборачивает выбираемый текст.
Если нажать «Нажмите на меня, чтобы выбрать», я бы ожидал счетчик в основном макете должен быть увеличен, но, к сожалению, это происходит только в том случае, если обработчик событий основного макета также вызывает StateHasChanged.
Я не совсем уверен, откуда возникла проблема, но Я знаю, что такая привязка в целом должна работать.
Заранее спасибо за помощь и предложения!

Подробнее здесь: https://stackoverflow.com/questions/783 ... -be-broken
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Связь между моей программой Python и библиотекой нарушена?
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Windows gradlew quarkusDev — кодировка всех символов, отличных от ASCII, в выводе журнала и даже System.out нарушена
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Схема движения несколько нарушена [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Приложение Flutter удалено из Google Play после интеграции карт Google - какая политика может быть нарушена?
    Anonymous » » в форуме Android
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Привязка источника данных Mysql со столбцами представления сетки данных в asp.net
    Гость » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»