1

根据用户操作,我想将视图(在 MvxViewController 内)动态添加到 CollectionView 的子视图集合中。这就是我正在做的事情:

不起作用:SubviewThree 继承了 MvxViewController

var mvxViewController = new SubviewThree();  // SubviewThree inherits MvxViewController
var uiView = mvxViewController.View;
uiView.ClipsToBounds = true;
uiView.Hidden = false;
uiView.Frame = new RectangleF(0, 0, 320, 200);
CollectionView.AddSubview(uiView);
CollectionView.BringSubviewToFront(uiView);

作品:SubviewThree 继承 UIViewController

var mvxViewController = new SubviewThree();  // SubviewThree inherits UIViewController
var uiView = mvxViewController.View;
uiView.ClipsToBounds = true;
uiView.Hidden = false;
uiView.Frame = new RectangleF(0, 0, 320, 200);
CollectionView.AddSubview(uiView);
CollectionView.BringSubviewToFront(uiView);

作品:

var label = new UILabel();    // All simple controls work just fine
label.Text = "Test Label";
label.ClipsToBounds = true;
label.Hidden = false;
label.Frame = new RectangleF(0, 0, 320, 200);
CollectionView.AddSubview(label);
CollectionView.BringSubviewToFront(label);

在 MvvmCross 中实现这一目标的最佳方法是什么?请注意,我不能在这里使用数据绑定(并通过视图模型的 ObservableCollection 添加它),因为要添加的视图取决于用户操作 - 它可能不是同一类型。

这是我正在尝试做的事情:

集合视图中的嵌套视图

在右/左按钮触摸时,我想交换视图。视图绑定到不同的视图模型。交换的视图可以是 V1 类型(有一个栏和另一个 UIView)或其他类型(只是一个 UIView)。

这是我的示例项目的 github 链接,以防上图不清楚。您只需运行该应用程序并单击“添加”按钮即可。将视图添加到子视图的代码在 BarCell.cs 的第 158 行中。我已经注释了上面提到的代码行。

Github 链接

4

1 回答 1

1

为了让 MvvmCross 创建 aView并将其与它的 挂钩ViewModel,MvvmCross 使用一个MvxViewModelRequest对象。在 iOS 中,这与ViewusingRequest属性相关联。

如果您愿意,您可以自己连接它 - 它只是一个get/必须在发生set之前设置的属性ViewDidLoad- 请参阅IMvxTouchView.cs

或者:

于 2013-09-13T11:57:17.660 回答