Neuling hier. Ich möchte eine Warnung von ViewModel anzeigen.Wie Alarm von ViewModel angezeigt wird
Problem: Der Name 'DisplayAlert' existiert nicht im aktuellen Kontext
Wie das zu tun? Unten ist mein Code.
-- XAML
<Button x:Name="BtnLogin" Command="{Binding LoginCommand}" BackgroundColor="Green" TextColor="White" WidthRequest="150" HeightRequest="60" Text="Login" />
--- ViewModel :
class LoginViewModel : ViewModelBase
{
private string _username;
public string Username
{
get { return _username; }
set
{
_username = value;
OnPropertyChanged();
}
}
private string _password;
public string Password
{
get { return _password; }
set
{
_password = value;
OnPropertyChanged();
}
}
public LoginViewModel()
{
}
public Command LoginCommand
{
get
{
return new Command(ValidateUser);
}
}
async void ValidateUser()
{
if (_username.Length > 1 && _password.Length > 1)
{
//await DisplayAlert("Login", "Login Success", "Ok");
//--Update:
UserDialogs.Instance.Alert("Login Success", "Login", "OK");
}
else
{
// display invalid credential
}
}
aktualisieren Es gibt a) Acr.UserDialogs V6.5.1 b) Acr.XamForms.UserDialog v5.0.0
Ich verwende die ältere Version, die (b), da ich m mit PCL.
Ich habe es importiert und ändern Sie den Code, um es wie oben zu verwenden. Aber es gibt Fehler msg: mit Acr.UserDialogs;
Err Msg:
java.lang.NullPointerException: Ausnahme vom Typ 'java.lang.NullPointerException' geworfen wurde. bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in < 3fd174ff54b146228c505f23cf75ce71>: 0 bei Java.Interop.JniEnvironment + InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference Beispiel Java.Interop.JniObjectReference Typ, Java. Interop.JniMethodInfo-Methode, Java.Interop.JniArgumentValue * args) [0x00089] in: 0 bei Java.Interop.JniPeerMembers + JniInstanceMethods.FinishCreateInstance (System.String-KonstruktorSignatur, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue * -Parameter) [0x0004f] in: 0 bei Android.App.AlertDialog + Builder..ctor (Kontext von Android.Content.Context) [0x0007a] in: 0 bei Acr.UserDialogs.Builders.AlertBuilder.Build (Android.App.Activity Aktivität, Acr.UserDialogs.AlertConfig config) [0x0000d] in: 0 bei Acr.UserDialogs.UserDialogsImpl.Alert (Acr.UserDialogs.AlertConfig config) [0x00038] in: 0 bei Acr.UserDialogs.AbstractUserDialogs.Alert (System.String Nachricht, System.String Titel, System.String okText) [0x00024] in : 0 bei BookingNow.ViewModel.LoginViewModel.ValidateUser() [0x00026] in C: \ Benutzer \ Edward \ Dokumente \ Visual Studio 2017 \ Projekte \ BookingNow \ BookingNow \ BookingNow \ ViewModel \ LoginViewModel.cs: 88 --- Ende der verwalteten Java.Lang.NullPointerException Stack-Trace --- java.lang.NullPointerException bei android.app.AlertDialog.resolveDialogTheme (AlertDialog.java:143) bei android.app.AlertDialog $ Builder. (AlertDialog.java:360) bei md5270abb39e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.n_onClick (native Methode) bei md5270abb3 9e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.onClick (ButtonRenderer_ButtonClickListener.java:30) bei android.view.View.performClick (View.java:4476) bei android.view.View $ PerformClick.run (View.java:18787) bei Android. os.Handler.handleCallback (Handler.java:730) bei android.os.Handler.dispatchMessage (Handler.java:92) bei android.os.Looper.loop (Looper.java:176) bei android.app. ActivityThread.main (ActivityThread.java:5493) bei java.lang.reflect.Method.invokeNative (systemeigene Methode) bei java.lang.reflect.Method.invoke (Method.java:525) bei com.android.internal .os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1209) bei com.android.internal.os.ZygoteInit.main (Zyg oteInit.java:1025) bei dalvik.system.NativeStart.main (native Methode)
Dank
Was haben Sie bisher versucht? –
Der Name 'DisplayAlert' ist im aktuellen Kontext nicht vorhanden – MilkBottle
Können Sie Ihre Stack-Ablaufverfolgung freigeben, wenn das passiert? Außerdem ist 'DisplayAlert' am wahrscheinlichsten mit dem UI-Lebenszyklus verknüpft, so dass es nicht direkt außerhalb einer Seite aufgerufen werden kann (in Ihrem Fall das ViewModel). Eine Lösung hierfür wurde [hier] bereitgestellt (https://forums.xamarin.com/discussion/22499/looking-to-pop-up-an-alert-like-displayalert-but- from-the-view-model- xamarin-forms-labs) mit einer Pub/Sub-Implementierung. –