Два параметра привязки для текстового поля в blazor

#c# #blazor

Вопрос:

У меня есть текстовое поле в blazor, которое связано с функцией проверки с помощью FluentValidation. Я хотел бы также иметь параметр onChange, так как я хочу связать это текстовое поле также с графикой SVG, чтобы нарисовать масштабированный прямоугольник, используя параметр текстового поля onChange, но я получаю ошибку. Я читал, что значение привязки и onChange не должны быть вместе, но я все еще новичок в Blazor и не знаю, как еще привязать действие onChange к SVG, чтобы перерисовать прямоугольник и одновременно проверить ввод.

 <MudForm Model="@model_input" @ref="@form">
<MudCardContent>
<MudTextField @bind-Value="model_input.Width" Validation="@(inputValidator.ValidateValue)" 
     For="@(() => model_input.Width)" Immediate="true" Label="w [mm]"
 onChange="ScaleGraphics"/>

<MudTextField @bind-Value="model_input.Height" Validation="@(inputValidator.ValidateValue)"
     For="@(() => model_input.Height)" Immediate="true" Label="h [mm]"
 onChange="ScaleGraphics"/>
</MudCardContent>
</MudForm>
 

Прямоугольник SVG

 <svg viewBox="0 0 @mainDwgWidth @mainDwgHeight">
 <rect width="@scaledWidth" height="@scaledHeight" x="10" y="10" style="fill: skyblue; stroke: cadetblue; stroke-width: 0.2;" />
</svg>
 

Функция обновления прямоугольника

 @code {
private double mainDwgWidth = 200;
private double mainDwgHeight = 100;
private double scale { get; set; } = 0.0;
private double scaledWidth = 50.0;
private double scaledHeight = 50.0;

private void ScaleGraphics()
{
    scale = Math.Min(mainDwgWidth / model_input.Width, mainDwgHeight / model_input.Height);
    Console.WriteLine("scale: {0}", scale);
    scaledWidth = model_input.Width * scale;
    scaledHeight = model_input.Height * scale;
    StateHasChanged();
}
}
 

Я проверял консоль, и там даже ничего не написано, поэтому она даже не вызывает ScaleGraphics(). У кого-нибудь есть рабочее решение? Очень признателен.

Комментарии:

1. Не уверен в элементах управления MudBlazor, но вы должны быть в состоянии привязаться к OnInput тому, что может удовлетворить ваши потребности.

2. Я попробовал без ввода, но без разницы.

3. Какую ошибку вы получаете?

4. никакой ошибки. Просто ничего не происходит, когда я меняю значения в текстовых полях.

5. Если OnInput не запускается, то нет безопасных способов сделать это с помощью MudBlazor. Оковы использования чужих рамок. Если бы вы использовали стандартные элементы управления вводом Blazor, это был бы другой ответ.