У меня есть страница 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