Для начального экрана я использую ViewModel, в конструкторе которого определены эти RelayCommands:< /p>
Код: Выделить всё
ChangeSettingsCommand = new CommunityToolkit.Mvvm.Input.RelayCommand(OnChangeSettings, CanChangeSettings);
ChangeSettingsCommand.NotifyCanExecuteChanged();
Код: Выделить всё
public CommunityToolkit.Mvvm.Input.RelayCommand ChangeSettingsCommand { get; set; }
public bool CanChangeSettings(object paramater)
{
return true;
}
#endregion
internal void OnChangeSettings(object parameter)
{
ChangeSettingsEvent?.Invoke(this, new EventArgs());
}
Код: Выделить всё
moLogin.ChangeSettingsEvent += MoLogin_ChangeSettingsEvent;
private async void MoLogin_ChangeSettingsEvent(object sender, EventArgs e)
{
await Utils.PushAsyncWithoutDuplicate(new InitialSettingsNew(true));
}
Код: Выделить всё
lst.Add(new Controls.Phone.PBImageButton()
{
Command = moLogin.ChangeSettingsCommand,
//BindingContext = moLogin,
//ButtonImageFile = Utils.OnPlatform("Toolbar/settingswhite.png", "settingswhite.png", "Images/White/settings.png"),
Source = "w_settings.png",
//Behaviors.Add(behavior),
BackgroundColor = Colors.Transparent,
ButtonBorderColor = Colors.Transparent,
VerticalOptions = LayoutOptions.Center,
HorizontalOptions = LayoutOptions.Center,
HeightRequest = 40,
WidthRequest = 40
});
Таким образом, каким-то образом команда PBImageButton (свойство System.Windows.Input.ICommand) не работает в iOS.
Я уже пробовал решить эту проблему следующим образом:
1.
Похоже, причина в этом:
https://github.com/CommunityToolkit/Maui/issues /2065
Если перед именем RelayCommand стоит префикс «On», команда
никогда не будет запущена.
Удаление «Вкл..» не помогло.
2.
Используйте Атрибут RelayCommand (вместо определения RelayCommand в самом C#):
Код: Выделить всё
[RelayCommand]
internal void ChangeSettings(object parameter)
{
ChangeSettingsEvent?.Invoke(this, new EventArgs());
}
3.
Использование:
https://www.reddit.com/r/dotnetMAUI/com ... ?rdt=51962
Код: Выделить всё
ChangeSettings = new CommunityToolkit.Mvvm.Input.RelayCommand(OnChangeSettings, CanChangeSettings);
ChangeSettings.NotifyCanExecuteChanged();
Код: Выделить всё
ChangeSettingsCommand = new CommunityToolkit.Mvvm.Input.RelayCommand(OnChangeSettings, CanChangeSettings);
ChangeSettingsCommand.NotifyCanExecuteChanged();
4.
Когда Я напрямую использую PBImageButton с привязкой команды в представлении.......:
Код: Выделить всё
5.
Использование в методе «public» вместо «internal». ниже:
Код: Выделить всё
public void OnChangeSettings(object parameter)
{
ChangeSettingsEvent?.Invoke(this, new EventArgs());
}
Я думаю, что это может быть проблема, связанная с .NET. 8.0, потому что я использовал тот же код в другом приложении MAUI, которое работает с MAUI .NET 7.0, и здесь этой проблемы не возникло.
Кто-нибудь знает, есть ли известные проблемы с iOS и .NET 8.0, касающиеся RelayCommand (CommunityToolkit.Mvvm.Input.RelayCommand)?
Кто-нибудь знает, что здесь не так? Возможно, я упускаю из виду что-то очевидное.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ui-net-8-0