我有一个带有主从页面的 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
不需要构造函数中的任何参数,则此解决方案将起作用。否则,您可以考虑使用 ViewModelLocator
和 DI
来注入(inject)构造函数参数。
请注意,myViewModels
应在 XAML 页面的 header 中定义为 xmlns:myViewModels
。
P.S.:之前您提到在尝试使用代码隐藏方法时遇到异常。您可以通过设置 AttendPageMaster
的 Title
属性轻松解决此问题。示例:
new AttendPageMaster(new AttendanceViewModel()){ Title = " " };
关于Xamarin Forms - 将构造函数添加到 MasterDetailPage.Master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50585753/