【发布时间】:2016-04-07 16:30:38
【问题描述】:
我想在 MVVMCross 的 droid 项目中为我的 textview 创建一个倒数计时器。
我对这个解决方案有一点问题,因为我不能使用 System.Threading.Timer,所以我需要创建自己的类。
但我不知道怎么做,因为我自己的类必须在业务项目中,并且必须使用我的 .Core 项目和我的 UI 项目调用这个类...
你能帮帮我吗?
谢谢
我做了这个,但没有工作: SelfieBox.Business 中的 TimerCustom 类
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;
}
}
}
}
SelfieBox.Core 中的视图模型:
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;
}
}
我认为,在 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"/>
我的计时器很好地减少了,但它没有显示在我的屏幕上
【问题讨论】:
标签: android xamarin mvvmcross countdown