2016-04-28 5 views
0

я кнопку, плавающие в FundamentalView.axmlTextView Clickable в MVVMCross

<FrameLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingBottom="22dp" 
    android:paddingRight="22dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true"> 
    <ImageButton 
     android:id="@+id/addButton" 
     android:layout_width="56dp" 
     android:layout_height="56dp" 
     android:src="@drawable/ic_add_white_24dp" /> 
    </FrameLayout> 

г. В FundamentalView.cs, у меня есть мыши событие, которое запускает фрагмент из нижней части окна с наличием опций (добавление нового человек и новые расчеты).

var addButton = view.FindViewById<ImageButton>(Resource.Id.addButton); 
addButton.Click += OnAddButtonClick; 

void OnAddButtonClick(object sender, System.EventArgs e) 
{ 
    var dialog = new CardDialogView(); 
    dialog.Show(((MainView)Activity).SupportFragmentManager, "CardDialogView");   
} 

CardDialogView.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#FFFFFF"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:drawableLeft="@drawable/dash_add_computer" 
     android:textColor="@color/primary_text" 
     android:textSize="16sp" 
     android:text="New Calculation" 
     local:MvxBind="Click NewCalculationCommand"/> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:drawableLeft="@drawable/dash_add_head" 
     android:drawablePadding="28dp" 
     android:textColor="@color/primary_text" 
     android:textSize="16sp" 
     android:text="New Person" /> 
</LinearLayout> 

Мой вопрос заключается в том, как сделать TextView интерактивными и знать, какие TextView щелкнул в mvvmcross?

CardDialogView.cs

public class CardDialogView : MvxDialogFragment<CardDialogViewModel> 
    { 

     public override Dialog OnCreateDialog(Bundle savedState) 
     { 
      ..... 
      return dialog; 
     } 
    } 

CardDialogViewModel.cs

public class CardDialogViewModel : MvxViewModel 
{ 

    public ICommand NewCalculationCommand 
    { 
     get 
     { 
     // it does not come here! 
     return new MvxCommand(() => ShowViewModel<NewItemViewModel>(new { date = DateTime.Now })); 
     } 
    } 
} 

ответ

3

Вы можете связать TextView нажмите так же, как в качестве кнопки мыши:

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:drawableLeft="@drawable/dash_add_computer" 
     android:textColor="@color/primary_text" 
     android:textSize="16sp" 
     local:MvxBind="Click NewCalculationCommand" 
     android:text="New Calculation" /> 

Для второго текс tview привязывает его к другой команде. Таким образом, когда вызывается соответствующая команда, вы узнаете, какой текст ее вызвал.

+0

Спасибо Giorgi, откуда я узнаю, какой текст нажал? – hotspring

+1

@hotspring: см. Мой обновленный ответ. – Giorgi

+0

Отлично! Тогда мне нужно иметь «CardDialogViewModel» для фрагмента, правильно? – hotspring

Смежные вопросы