Мауи MVVM Частичный метод называется дваждыC#

Место общения программистов C#
Ответить
Anonymous
 Мауи MVVM Частичный метод называется дважды

Сообщение Anonymous »

У меня есть страница MAUI, которая в настоящее время отображает компонент «редактор» и «кнопку». Компонент кнопки используется для проверки, если текст в редакторе действителен JSON. Независимо от того, действителен ли JSON или нет, цвет должен вернуться к белому, если текст был изменен после проверки. Кнопка «Команда» является базой базы для ValidateCommand .
На Mac модель представления, показанная ниже, работает отлично. Когда вы нажимаете кнопку «Проверка», она установит цвет зеленым, повторно вформируется и отступает JSON. Это также изменяет цвет текста на белый, когда вы вносите изменения. < /P>
По какой -то причине он не работает в Windows. Я обнаружил, что поведение MVVM очень странным. Когда вы нажимаете кнопку, она запускает ValidateCommand , который повышает метод OnTextChanged (который мы ожидаем). Но затем после этого методы OnTextChanged выполняются во второй раз (чего не должно происходить, не случается на Mac. Приводит к тому, что текст станет белым прямо после проверки)
Любые предложения будут очень оценены. PrettyPrint-Override ">public partial class JSONEditorViewModel : ObservableObject
{
[ObservableProperty]
public string _text;

[ObservableProperty]
public string _jsonValidStatus;

[ObservableProperty]
public Color _formattingColour = Colors.White;

[ObservableProperty]
public bool _isJSONValid;

[ObservableProperty]
public bool _isJsonValidatorEnabled = false;

partial void OnTextChanged(string value)
{
FormattingColour = Colors.White;
JsonValidStatus = "";
}

[RelayCommand]
public void FormatAndValidate()
{
try
{
JObject editorJson = JObject.Parse(Text);
string formattedJson = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(Text), Formatting.Indented);
Text = formattedJson;

JsonValidStatus = "Valid JSON";
IsJSONValid = true;
FormattingColour = Colors.Green;
}
catch
{
FormattingColour = Colors.Red;
JsonValidStatus = "Invalid JSON";
IsJSONValid = false;
}
}
}
< /code>
xaml page: < /p>












Подробнее здесь: https://stackoverflow.com/questions/797 ... lled-twice
Ответить

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

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

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

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

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