Ich versuche, den Text in einem TextView durch Anpassen einer SeekBar zu ändern. Wenn ich die Eigenschaft TapSelectionProgress direkt (TapSelectionProgress = 2;
) setze, wird das TextView aktualisiert. Das Bindungsupdate wird jedoch nie von der Benutzeroberfläche ausgelöst.MVVM Light Binding SeekBars Fortschritt
In Main.axml:
<SeekBar
android:id="@+id/tapSeekBar"
android:max="5"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:rotation="270"
android:padding="50dp" />
In MainViewModel.cs:
public int TapSelectionProgress
{
get
{
return _tapSelectionProgress;
}
set
{
Set(ref _tapSelectionProgress, value);
if (value == 0)
{
TapSelectionText = "Tap Selection: Off";
}
else
{
TapSelectionText = String.Format("Tap Selection: {0}", value);
}
}
}
public string TapSelectionText
{
get
{
return _tapSelectionText;
}
set
{
Set(ref _tapSelectionText, value);
}
}
In MainActivity.cs:
_bindings.Add(this.SetBinding(
() => TapSeekBar.Progress,
() => Vm.TapSelectionProgress));
Ich habe versucht, die Quelle Trigger Aktualisierung:
_bindings.Add(this.SetBinding(
() => TapSeekBar.Progress,
() => Vm.TapSelectionProgress).UpdateSourceTrigger("ProgressChanged"));
But this gives me an InvalidCastException
Ich habe auch versucht, BindingMode auf TwoWay einzustellen. Ich konnte keine Beispiele für MVVM Light mit einer SeekBar finden. Jede Hilfe wird geschätzt.
Hier ist das Call-Stack während Ausnahme:
0xFFFFFFFFFFFFFFFF in System.Diagnostics.Debugger.Mono_UnhandledException_internal C#
0x1 in System.Diagnostics.Debugger.Mono_UnhandledException at /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/corlib/System.Diagnostics/Debugger.cs:122,-1 C#
0x26 in object.1f29ec3d-529a-4f23-9cce-3fd0f5ac1e00 C#
0x2F in System.Reflection.EventInfo.AddEventFrame<Android.Widget.SeekBar, System.EventHandler<Android.Widget.SeekBar.ProgressChangedEventArgs>> at /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/corlib/System.Reflection/EventInfo.cs:222,-1 C#
0x7C in System.Reflection.EventInfo.AddEventHandler at /Users/builder/data/lanes/3511/501e63ce/source/mono/mcs/class/corlib/System.Reflection/EventInfo.cs:110,-1 C#
0xC5 in GalaSoft.MvvmLight.Helpers.Binding<int,int>.UpdateSourceTrigger at c:\MvvmLight\Source\GalaSoft.MvvmLight\GalaSoft.MvvmLight.Platform (Android)\Helpers\BindingGeneric.cs:342,13 C#
0x172 in MDP_Demo.MainActivity.OnCreate at c:\hgroot\Mobile\MDP Demo\MDP Demo\MainActivity.cs:51,13 C#
0x13 in Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ at /Users/builder/data/lanes/3511/501e63ce/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Android.App.Activity.cs:2102,4 C#
0x17 in object.1f29ec3d-529a-4f23-9cce-3fd0f5ac1e00 C#
Sie sollten auch die 'InvalidCastException' hier, wie es auf das Problem etwas Licht kann. – Xiaoy312
Ich habe einen Screenshot der Nachricht hinzugefügt, die ich erhalte. Ich fürchte, es gibt mir nicht viele Informationen außer "Angegebener Cast ist nicht gültig". UpdateSourceTrigger gibt ein Binding-Objekt zurück. –
Ich sollte hinzufügen, dass die Bindung der TextView funktioniert. '_bindings.Add (this.SetBinding ( () => Vm.TapSelectionText, () => TapSelectionLabel.Text));' –