2013-07-31 29 views
0

我正在開發基於MvvmCross的android應用程序。該應用程序包含(除其他外)大量的ToggleButton(s)。這些按鈕被添加到.axml文件中。他們的Checked屬性和Click事件綁定到視圖模型屬性。由於每個ToggleButton的Checked屬性應該反映應用程序服務器上某些屬性的狀態,因此我不希望在用戶點擊它們時更改已檢查的狀態,但只有當視圖模型上的綁定屬性發生更改時。這個「特殊」切換按鈕應該如何工作的例子:當用戶點擊它時,按鈕的「Checked」屬性不會僅僅改變綁定click事件的ICommand被調用。該命令調用的方法依次更改視圖模型上的屬性值(如果成功執行)。在WPF或Windows Forms中將ToggleButton擴展爲描述功能很容易,但我不知道如何在android中執行此操作。任何想法將不勝感激。Xamarin.Android中的自定義ToggleButton

Uroš

+0

到目前爲止,您嘗試了什麼?在Android中實現和擴展控件及其在MvvmCross中的綁定非常簡單。對於某些示例,請參閱http://mvvmcross.wordpress.com – Stuart

+0

Hi Stuart中的N = 18和N = 28。我同意在MvvmCross中實現自定義綁定非常簡單。我檢查了N = 18的tuttorial,並且在stackoverflow上發現了很少的答案。但我認爲我的問題不能用自定義綁定來解決,因爲我的ToggleButton的視覺狀態有問題。我也嘗試過擴展ToggleButton,並在覆蓋中附加了OnClickListener,但是我沒有得到很多。我搜索了一些文章來解釋這個話題,但找不到任何與我的問題相關的東西。 –

回答

0

我找到了解決我的問題的方法。現在看來,這不得不做一些與我建立了我的切換按鈕

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文件包含結合於點擊事件,不執行的OnClick(查看v)的方法。我不知道爲什麼,所以我會喜歡任何解釋。我使用的解決方法是在派生類中定義自定義事件,在OnClick事件處理程序中引發自定義事件,並綁定到該事件。

Uros

相關問題