2016-02-19 54 views
1

我嘗試將MvxListView的選定項綁定到我的屬性。這是我的佈局:無法創建綁定SelectedItem的目標綁定

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:fitsSystemWindows="true" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <include 
     layout="@layout/toolbar_actionbar" /> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingLeft="6dp" 
     android:paddingRight="6dp"> 
     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/hint_search_text" 
      local:MvxBind="Text SearchText" /> 
     <MvxListView 
      android:id="@+id/category_list" 
      android:orientation="vertical" 
      android:choiceMode="singleChoice" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      local:MvxItemTemplate="@layout/listitem_category" 
      local:MvxBind="ItemsSource Categories; SelectedItem SelectedCategory" /> 
    </LinearLayout> 
</LinearLayout> 

此處的ItemSource已被正確綁定。

視圖模型:

[ImplementPropertyChanged] 
public class SelectCategoryListViewModel : AbstractCategoryListViewModel 
{ 
    /// <summary> 
    ///  Creates an CategoryListViewModel for the usage of providing a category selection. 
    /// </summary> 
    /// <param name="categoryRepository">An instance of <see cref="IRepository{T}" /> of type category.</param> 
    /// <param name="dialogService">An instance of <see cref="IDialogService" /></param> 
    public SelectCategoryListViewModel(IRepository<Category> categoryRepository, 
     IDialogService dialogService) : base(categoryRepository, dialogService) 
    {} 

    public Category SelectedCategory { get; set; } 

    public MvxCommand DoneCommand => new MvxCommand(Done); 

    public MvxCommand CancelCommand => new MvxCommand(Cancel); 

    private void Done() 
    { 
     MessageHub.Publish(new CategorySelectedMessage(this, SelectedCategory)); 
     Close(this); 
    } 

    private void Cancel() 
    { 
     Close(this); 
    } 
} 

不是通知的PropertyChanged通過Fody和類別做是母VM。

public class SelectCategoryListActivity : MvxFragmentCompatActivity<SelectCategoryListViewModel> 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     SetContentView(Resource.Layout.fragment_category_list); 

     SetSupportActionBar(FindViewById<Toolbar>(Resource.Id.toolbar)); 
     SupportActionBar.SetDisplayHomeAsUpEnabled(true); 
    } 
... 

我得到的警告是:

[0:] MvxBind:警告:5.11無法創建目標綁定的SelectedItem爲SelectedCategory

理念結合?

回答

3

我剛剛遇到類似的問題,SelectedItem綁定失敗。解決的辦法是將Mvx更新到版本4.1.6。原因在於您需要註冊MvxAppCompatSetupHelper.FillTargetFactories,而4.1.6現在已經自動完成。

或者,您可以手動覆蓋FillTargetFactories註冊它在你setup.cs:

protected override void FillTargetFactories(IMvxTargetBindingFactoryRegistry registry) 
{ 
    MvxAppCompatSetupHelper.FillTargetFactories(registry); 
    base.FillTargetFactories(registry); 
}