如何使用mvvmLight在Xamarin Forms中将数据从ContentPage ViewModel传递到ContentView Viewmodel?

塞布施

我有一个带有某些控件的ContentPage和一个自定义的navigationcontrol(ContentView)。contentpage和navigationcontrol都有各自的ViewModel,它们的BindingContext设置为它们。现在,我需要将信息从页面传递到NavigationControl。

我试过的

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                 xmlns:controls="clr-namespace:AuditApp.Controls;assembly=App"
                 x:Class="App.Pages.MyPage"
                 x.Name="contentpage">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="9*"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            ...other controls...
            <controls:PageNavigationControl Grid.Row="1" Page="{Binding Page}"/>
        </Grid>
    </ContentPage>

页面是我的navigationControl中的自定义BindingProperty。该属性有效,但是BindingContext错误,它试图绑定到导航控件的ViewModel中的“ Page”属性。

如果我这样更改它:

<controls:PageNavigationControl Grid.Row="1" Page="{Binding Page}" BindingContext="{x:Relative Name=contentpage"}/>

那么它也不起作用,因为它尝试绑定到ContentPage本身而不是ViewModel。我需要将其绑定到ContentPage的ViewModel,后者具有要读取的Page属性。

我的方法完全错误吗?我应该使用MessagingCenter吗?我对Xamarin Forms很陌生。有人可以告诉我如何正确执行此操作吗?

塞布施

对于任何遇到类似问题的人,这就是我解决的方法。我对该解决方案并不完全满意,但是它可以工作:

我在页面ViewModel中将控件ViewModel作为属性,并以编程方式进行设置:

NavigationViewModel = App.VmLocator.PageNavigationViewModel;

在xaml中,我将自定义控件的BindingContext设置为Property:

<controls:PageNavigationControl Grid.Row="1" BindingContext="{Binding NavigationViewModel}"/>

现在,我可以在我的PageView模型中访问控件ViewModel,并且可以在那里传递所需的数据。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Xamarin.Forms-将值从View传递到ViewModel

如何在 MVVM 之后将数据从 ViewModel 传递到 Xamarin.Forms 中的 View 代码?

如何将数据从ViewModel层传递到View层

如何将模型数据从ViewController传递到ViewModel

使用MVVMLight在ViewModel之间传递参数

将数据从 BroadcastReceiver 传递到 ViewModel 或 Repository

SwiftUI将数据传递到ViewModel

将数据从存储库传递到ViewModel

在 SwiftUI 中将数据从一个 ViewModel 传递到另一个 ViewModel?

如何从 Xamarin.Droid 获取数据到 Xamarin.Forms 中的 ViewModel

如何在 Xamarin Forms 中将参数从一个页面传递到另一个页面?以及如何绑定视图(页面)及其 ViewModel 并初始化 ViewModel 对象?

使用MvvmLight和Xamarin.iOS将属性绑定到ViewModel

如何在ViewModel ins xamarin.forms中使用参数

ViewModel 如何保留数据?

在Xamarin.Forms上的XAML中将BindingContext设置为ViewModel

如何使用 ViewModel(s) 在片段之间传递数据?

将 SFDataGrid 的列绑定到 Xamarin Forms 中的 ViewModel 属性

SwiftUI 和 MVVM - 将数据从子视图的 ViewModel 传递到父视图的 ViewModel

将数据从后面的代码和ViewModel传递到另一个ViewModel

将数据从ViewModel的AsyncTask传递到调用活动

Xamarin Prism BindingContext到ViewModel的Intellisense数据建议

使用从LINQ到Entites的数据填充包含其他ViewModel的ViewModel

从 Service 传递数据做 ViewModel

使用MVC通过Viewmodel属性传递Morris图表数据

使用Android中的ViewModel将数据与带有recyclerview的片段传递到另一个片段

Xamarin Android-如何将事件从MainActivity传递给Forms页面上的ViewModel?

如何从ViewModel正确传递事件?

如何将ListView.ItemTapped事件绑定到Xamarin Forms中的ViewModel命令?

如何从MVC ViewModel获取输入数据到Ajax Post