gpt4 book ai didi

c# - Xamarin - Prism : How do I pass the whole ViewModel of the ContentPage to a child ContentView

转载 作者:行者123 更新时间:2023-12-03 10:20:04 27 4
gpt4 key购买 nike

好的,所以这个看起来很简单,但我想一个人必须非常熟悉 xamarin 和 XAML 语法,并且知道它的能力。

场景

我将 Xamarin 与 Prism 一起使用,因此我拥有 ViewModelLocator Autowire 的强大功能,因此请在提交回复时牢记这一点。

好的,假设我有一个 内容页面(主页)并且此页面有一个类型为 的子组件内容 View (CustomNavBar) .对于内容页面

现在 Prism 很酷,我可以通过约定或自定义注册我的 View 模型,因为这个例子让我们显式注册它们(只是为了确定)

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
//Registering Navigation
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<MainPage>, MainPageViewModel>();
//I wish i could register the model of an object of type
//ContentView but I cant :( hence this post :P
}

为了清楚起见,我可以确认我的 ContentPagem.xaml 已正确绑定(bind)到其 View 模型 现在因为我无法将模型绑定(bind)到我的 ContentView (ChildView) 使用上面的代码,下一个合乎逻辑的解决方案是将绑定(bind)上下文从父级注入(inject)到子级,如果您执行以下操作可以正常工作:
<!--Snippet from my MainPage.xaml (ContentPage)-->
<local:CustomNavBar BindingContext="{Binding CurrentUser}" />

所以这也可以正常工作,我的 childView (CustomNavBar.xaml) 将可以访问 CurrentUser 对象的所有属性

所以我的问题是
如果 MainPage.xaml(内容页面/父级)有一个委托(delegate)命令,我想将其传递给 childView(CustomNavBar.xaml),那么我将如何传递它?理想情况下,我想将 ContentPage (MainPage.xaml) 的相同 View 模型传递给 ChildView (CustomNavBar.xaml),换句话说,我如何将 bindingcontext 传递为当前 View ?
<!--How do i pass the current viewmodel to this contentview-->
<local:CustomNavBar BindingContext="{Binding <this viewmodel>}" />

我已经通过将委托(delegate)命令包装在一个对象中然后将该对象传递给内容 View 来解决我的问题,但我的问题是如何通过将当前 View 模型传递给 child 来更清洁和正确地做到这一点?

备注 :我希望我设置正确的上下文,请避免围绕问题提出的建议,例如:“为什么不使用 IEventAggregator blah blah 或任何其他建议注册一个事件。我的要求很明确”对此的任何见解将不胜感激:) 谢谢。

最佳答案

所以为了确保我能很好地理解你,你的问题是你的页面 A 有 View 1,并且你想将 BindingContext 从页面 A 传递给 View1,对吗?

好吧,在这种情况下,您不必做任何事情,因为一旦将 View1 包含到 PageA 中,则 View 将固有绑定(bind)上下文

<ContentPage Title="{Binding MyTitle}">
<StackLayout IsVisibile="{Binding IsGroup1Showen}">
<Label Text ="{Binding UserName}">
</StackLayout>
</ContentPage>

在示例中,StackLayout 是一个 View ,就像您正在使用的自定义 View 一样。
在 View 模型中查看 View 绑定(bind)上下文的一个好方法是检查 OnBindingContextChanged 方法并查看 .

关于c# - Xamarin - Prism : How do I pass the whole ViewModel of the ContentPage to a child ContentView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51280964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com