我正在开发基于MvvmCross的Android应用程序。该应用程序包含(除其他外)大量的ToggleButton(s)。这些按钮添加在.axml文件中。他们的Checked属性和Click事件绑定到视图模型属性。由于每个ToggleButton的Checked属性应该反映应用程序服务器上某些属性的状态,我不希望在用户单击它们时更改它们的检查状态,但仅当视图模型上的bound属性发生更改时。此“特殊”切换按钮应如何工作的示例:当用户单击它时,按钮的“已检查”属性不会仅更改调用click事件所绑定的ICommand。该命令调用的方法依次更改视图模型上的属性值(如果成功执行)。将WPF或Windows窗体中的ToggleButton扩展到所描述的功能很容易,但我不知道如何在android中执行此操作。任何想法都会受到赞赏。
UROS
答案 0 :(得分:0)
我找到了解决问题的方法。看来我必须对我为ToggleButton
设置绑定的方式做些什么MyToggleButton实现为:
public sealed class MyToggleButton : ToggleButton, View.IOnClickListener
{
public MyToggleButton(Context context, IAttributeSet attrs)
: base(context, attrs)
{
SetOnClickListener(this);
}
public void OnClick(View v)
{
Checked = !Checked;
}
}
正如您所看到的,我只是在用户单击按钮时将Checked属性设置回以前的值。在asmx中,我使用以下块添加按钮。
<controls.MyToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
local:MvxBind="Checked Value;Click ClickCommand" />
事实证明,所描述的解决方案的问题是,只要.axms文件包含对Click事件的绑定,当用户单击该按钮时,不会执行OnClick(View v)方法。我不知道为什么会这样,我会喜欢任何解释。我使用的解决方法是在派生类中定义自定义事件,在OnClick事件处理程序中引发自定义事件,然后绑定到该事件。
乌罗什