2013-01-11 14 views
1

如何實現用MvvmCross在MonoTouch的分組的表視圖,所以你得到的東西是這樣的:分組表中的MonoTouch與MvvmCross

http://www.yetanotherchris.me/storage/downloads/UITableViewController.png

現在我有這樣的一段代碼,但我不能UITableViewStyle更改爲分組:

public partial class HomeView : MvxBindingTouchTableViewController<HomeViewModel> 
{ 
    public HomeView(MvxShowViewModelRequest request) 
     : base(request) 
    { 

    } 

    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     NavigationItem.SetRightBarButtonItem(new UIBarButtonItem("History", UIBarButtonItemStyle.Bordered, (sender, e) => ViewModel.DoGoToHistory()), false); 

     var source = new MvxActionBasedBindableTableViewSource(
      TableView, 
      UITableViewCellStyle.Value1, 
      new NSString("HomeView"), 
      "{'TitleText':{'Path':'Date'},'DetailText':{'Path':'Location'},'SelectedCommand':{'Path':'ViewDetailCommand'}}", 
      UITableViewCellAccessory.DisclosureIndicator); 

     this.AddBindings(
      new Dictionary<object, string>() 
      { 
      { source, "{'ItemsSource':{'Path':'List'}}" }, 
      { this, "{'Title':{'Path':'TestTitle'}}"} 
     }); 

     TableView.Source = source; 
     TableView.ReloadData(); 
    } 
} 

有誰知道如何做到這一點?

回答

2

您的圖片只顯示一個部分....假設您只查找一個部分,但是這個分組樣式,那麼您所需要做的就是以某種方式引入UITableViewStyle.Group。

我不知道,目前MvxTableViewController暴露出這個給你 - 所以你可能要麼需要編輯MVX源添加相應的構造函數:

protected MvxTouchTableViewController(MvxShowViewModelRequest request, UITableViewStyle style = UITableViewStyle.Plain) 
     : base(style) 
    { 
     ShowRequest = request; 
    } 

protected MvxBindingTouchTableViewController(MvxShowViewModelRequest request, UITableViewStyle style = UITableViewStyle.Plain) 
     : base(request, style) 
    { 
    } 

或者,您可以使用基本視圖控制器(在其中添加一個表作爲子視圖)而不是使用tableview派生視圖控制器。


如果你想多個組,那麼你就需要做更多的工作 - 因爲你需要制定出界TableViewSource如何運作出部份的數量和每個項目的數量部分。

+0

謝謝你的回答!也許一個愚蠢的問題@Stuart,但如何添加一個表作爲子視圖並使用MvvmCross綁定。你仍然可以使用MvxActionBasedBindableTableViewSource嗎? – cengelen

+0

用它的位置(框架)創建uiableview,設置它的源代碼,然後使用addsubview? – Stuart

0
public class UserView : MvxTableViewController<UserViewModel> 
    { 
     public UserView() 
      :base(UITableViewStyle.Grouped) 
     { 
     } 
    } 

請記住使構造函數公開和無參數。