MVVMCross'taki droid projemde metin görüşüm için bir geri sayım sayacı oluşturmak istiyorum. i System.Threading.Timer kullanamazsınız çünkü bu çözüm ile küçük bir sorun var, bu yüzden ben kendi sınıf oluşturmak gerekir Xamarin Android ile Geri Sayım MVVMCross
:
Bu benim çözümdür.
Ama çünkü benim kendi sınıf İş Projesi olmalı ve bu sınıf benim UI Projesi ile benim .Core proje ile çağrılmalıdır nasıl bilmiyorum ... Bana
yardımcı olabilir misiniz?Bunu yapan
teşekkür ederim ama çalışmıyor: SelfieBox.Business içinde TimerCustom sınıf
public class TimerCustom
{
private int _valueOfTimer;
private bool _timerRunning;
public int ValueOfTimer
{
get { return _valueOfTimer; }
set { _valueOfTimer = value; }
}
public TimerCustom(int valueOfTimer)
{
_valueOfTimer = valueOfTimer;
}
public async Task<TimerCustom> Start()
{
if (!_timerRunning)
{
_timerRunning = true;
await RunTimer();
}
return this;
}
private async Task RunTimer()
{
while (_timerRunning && _valueOfTimer > 0)
{
await Task.Delay(1);
_valueOfTimer--;
if (_valueOfTimer == 0)
{
_timerRunning = false;
}
}
}
}
ViewModel SelfieBox.Core içinde:
public class SecondStep_Photo_ViewModel : MvxViewModel
{
private Business.Models.TimerCustom _timerCustom;
#region Prop => Value Of Timer
private int _valueOfTimer;
public int ValueOfTimer
{
get { return _valueOfTimer; }
set { _valueOfTimer = value; }
}
#endregion
public SecondStep_Photo_ViewModel()
{
_timerCustom = new Business.Models.TimerCustom(5);
_timerCustom.Start();
ValueOfTimer = _timerCustom.ValueOfTimer;
}
}
Ve görünümü, içinde SelfieBox.Droid:
...<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/TxtTimer"
android:textSize="200dp"
android:textStyle="bold"
android:gravity="center"
android:visible="false"
android:layout_centerInParent="true"
local:MvxBind="Text ValueOfTimer; Visible DisplayTimer"/>
Benim zamanlayıcı güzel azalmış, ancak Zamanlayıcı verir aynı etkiler elde etmek için Task.Delay
kullanabilirsiniz ekranımda
Work nice! Gerçekten teşekkürler Cheesebaron! –