MvvmCross Android绑定已启用,无法与Click一起使用 [英] MvvmCross Android binding Enabled not work with Click
本文介绍了MvvmCross Android绑定已启用,无法与Click一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
TextView
绑定到Enable,Clickable
和Click。加载activity
时,已启用&;Clickable
被绑定为假值,但TextView
无法禁用,仍可点击。将绑定值更改为True后,TextView
将被禁用。
我发现该问题与绑定Click事件有关。一旦绑定了Click,就会出现上述问题。在没有绑定Click事件的情况下,它可以按预期工作。
在下面的示例代码中,前两个TextViews
是可以的。使用绑定单击的最后一个不起作用。
TextInputEditText
中遇到了这个问题。我发现这种情况也适用于TextView
,因此我使用TextView
作为说明。
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="test textview can be disabled at load"
style="@style/EntryTextStyle"
local:MvxBind=" Enabled RouteMarker.ArrivalNotice" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="test textview with no click command, can be disabled at load"
style="@style/EntryTextStyle"
local:MvxBind=" Enabled RouteMarker.ArrivalNotice;
Clickable RouteMarker.ArrivalNotice" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="test textview with click command cannot be disabled at load"
style="@style/EntryTextStyle"
local:MvxBind=" Enabled RouteMarker.ArrivalNotice;
Clickable RouteMarker.ArrivalNotice;
Click DoSomethingCommand" />
private IMvxAsyncCommand _doSomethingCommand;
public IMvxAsyncCommand DoSomethingCommand
{
get
{
_doSomethingCommand = _doSomethingCommand ?? new MvxAsyncCommand(async () =>
{
await Task.Delay(10);
});
return _doSomethingCommand;
}
}
您知道如何修复吗?
谢谢
推荐答案
如Stuart所说,ICommand.CanExecute
和Enabled
属性之间存在一定的交互作用。正在将绑定切换到:
local:MvxBind="Click DoSomethingCommand;Enabled RouteMarker.ArrivalNotice;Clickable RouteMarker.ArrivalNotice;"
这篇关于MvvmCross Android绑定已启用,无法与Click一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文