Xamarin Forms - 将构造函数添加到 MasterDetailPage.Master

标签 xamarin xamarin.forms master-pages

我有一个带有主从页面的 Xamarin.Forms 应用程序,它运行良好。

但是我最近需要向母版页(AttendPageMaster)的构造函数添加一个参数,但现在我需要传递这个构造函数。

如何向 xaml 添加参数?

<MasterDetailPage.Master>
    <pages:AttendPageMaster x:Name="MasterPage" />
</MasterDetailPage.Master>

带有构造函数的页面背后的代码:

public AttendPageMaster(AttendanceViewModel viewModel)
{
}

如果您需要更多信息,请告诉我。

最佳答案

您不必通过构造函数将 ViewModel 传递给 Page,您可以设置 Page 的 BindingContext:

<MasterDetailPage.Master>
    <pages:AttendPageMaster x:Name="MasterPage">
        <pages:AttendPageMaster.BindingContext>
            <myViewModels:AttendanceViewModel />
        </pages:AttendPageMaster.BindingContext>
    </pages:AttendPageMaster>
</MasterDetailPage.Master>

如果您的 ViewModel 不需要构造函数中的任何参数,则此解决方案将起作用。否则,您可以考虑使用 ViewModelLocatorDI 来注入(inject)构造函数参数。
请注意,myViewModels 应在 XAML 页面的 header 中定义为 xmlns:myViewModels

P.S.:之前您提到在尝试使用代码隐藏方法时遇到异常。您可以通过设置 AttendPageMasterTitle 属性轻松解决此问题。示例:

new AttendPageMaster(new AttendanceViewModel()){ Title = " " };

关于Xamarin Forms - 将构造函数添加到 MasterDetailPage.Master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50585753/

相关文章:

ios - FontAwesome Pro 和 xamarin.ios 只有一种字体可以激活

c# - 为什么滚动这个 xamarin 页面这么慢?

asp.net - 从 asp.net 页面启动 javascript

c# - Google Analytics 和主页/用户控制交换

Jquery 无法在母版页中工作

c# - 如何在对象 DatabaseReference Xamarin.Firebase.Database 中使用接口(interface) IValueEventListener?

visual-studio - Xamarin的Visual Studio上 “XamlCTask”任务意外失败

Xamarin Android - 如何重建 Resource.designer.cs

c# - 在 xaml.cs 文件的 InitializeComponent() 上出现错误

c# - Xamarin.Forms MVVM Light IDialogService ShowMessage 抛出 native 异常