【问题标题】:Loading Multiple ViewModel in a single View Xamarin Forms在单个 View Xamarin 表单中加载多个 ViewModel
【发布时间】:2017-10-19 07:08:22
【问题描述】:

我正在开发一个 Xamarin Forms 项目,其中我有一个屏幕分为 2 个部分,在一个视图中(比如 DashBoardView.Xaml)。一方面是有一些菜单选项,另一方面我想在单击菜单选项时加载不同的视图。 具有不同 ViewModel 注册的动态视图(使用 XLABS MVVM)ViewFactory。

DashBoardView.Xaml

<Grid>
   <Grid ColumnSpacing="0" RowSpacing="0"  BackgroundColor="#404040">
    // menu options having Command binded in DashboardViewModel
   </Grid>

   <ContentView Grid.Row="0" Grid.Column="1" BackgroundColor="White"
   Content="{Binding DashboardDetailView}">
     // views are binded with DashboardDetailView 
    // views are loaded dynamically to DashboardDetailView 
      (bindable property) using new Keyword when menu option
       command is executed.
   </ ContentView>
</Grid>


DashBoardViewModel.CS

  private Command _dashboardMenuOptionCommand;
    public Command DashboardMenuOptionCommand
    {
        get
        {
            return _ dashboardMenuOptionCommand?? (_dashboardMenuOptionCommand = new Command(() => {
                DashboardDetailView = new ABCView();
            }));
        }
    }

注意:ABCView 是使用 xLab 的 ViewFactory 向 ABCViewModel 注册的 Xaml 视图

问题:问题是 ABCView 正在加载,但没有发生用户交互,因为没有调用绑定到 ABCViewModel 中标签的命令。是不是我做错了什么,或者有没有更好或优化的方法来实现同样的目标? 请找到随附的屏幕截图以供参考。 DashboardView.xaml

【问题讨论】:

  • 我更喜欢使用 MVVMCross。它拥有更活跃的社区。​​span>

标签: c# xamarin.android xamarin.forms mvvmcross xlabs


【解决方案1】:

实例化视图不会自动实例化视图模型并将其设置为绑定上下文。

大多数(如果不是全部)MVVM 框架将为您提供实例化或解析 页面的方法,该方法将自动查找并连接适当的视图模型好吧。不太确定使用视图模型自动解析 视图

如果您的框架不支持,您可以通过实例化您的视图模型,然后将其分配给视图的绑定上下文,然后再将视图添加到页面来自己完成。

请注意,XLabs 是一个死项目,我不太确定继续使用它是否明智,我建议您查看当前的 MVVM 框架(有很多)并选择一个适合您的需求和外观的对你很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-21
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    相关资源
    最近更新 更多