Xamarin.forms Xamarin表单应用程序外壳OnPropertyChanged未更新FlyoutHeader视图

Xamarin.forms Xamarin表单应用程序外壳OnPropertyChanged未更新FlyoutHeader视图,xamarin.forms,app-shell,Xamarin.forms,App Shell,我正在将viewmodel中的文本属性绑定到App Shell滑出菜单的弹出式标题视图中 当应用程序初始化时,所有更新事件都会正确触发,但是用户可以进入一个页面来更新其信息 我遇到的问题是,当您导航到此页面并执行更新时,FlyoutHeader视图不会根据viewmodel进行更新 是否有特定于滑出菜单的内容,意味着一旦加载它,它就不会响应onpropertychanged?似乎不对 来自AppShell xaml <Shell.FlyoutHeader> <views

我正在将viewmodel中的文本属性绑定到App Shell滑出菜单的弹出式标题视图中

当应用程序初始化时,所有更新事件都会正确触发,但是用户可以进入一个页面来更新其信息

我遇到的问题是,当您导航到此页面并执行更新时,FlyoutHeader视图不会根据viewmodel进行更新

是否有特定于滑出菜单的内容,意味着一旦加载它,它就不会响应onpropertychanged?似乎不对

来自AppShell xaml

<Shell.FlyoutHeader>
    <views:FlyoutHeader />
</Shell.FlyoutHeader>
用户通过FlyoutHeader视图中的一个按钮导航到“更改位置”页面,该按钮称为like so

            await Shell.Current.GoToAsync("changelocation");
在我的调试日志中,我可以看到LocationsViewModel中的绑定对象“user”确实会触发OnPropertyChanged以响应此页面上的更改,但随后返回并打开弹出菜单,没有任何更改,我可以看到PropertyChanged没有为该视图触发吗


我认为OnPropertyChanged绑定的整个要点是,即使在加载了视图的情况下,也会发生更新以导致视图响应?

问题基本上是因为您正在创建同一ViewModel的多个实例,所以问题是您正在尝试更改绑定到ViewModel中属性的标头,然后绑定到您的视图,因此,为了使视图反映您在ViewModel中所做的更改,它应该具有绑定到它的ViewModel实例(如果有意义的话)

这样做可以解决你的问题


祝你好运

为什么您需要在那里使用
OnBindingContextChanged
?它允许我将事件与_vm_PropertyChanged关联,在这里我有一些代码用新值更新相应的标签。在这种情况下,我使用它的目的是非常简单的,也许在XAML中绑定该标签意味着我不需要它,但它有什么不应该起作用的吗?我取出代码(除了这个.BindingContext=)并将标签绑定到XAML中的text属性,但结果相同,当您转到另一个页面并通过viewmodel进行更改时,它不会更新(我在另一个页面上放置了一条调试消息,确认标签文本在您更改它的页面的上下文中更新)。因此,我想知道这是否与弹出按钮的工作方式有关,我从您的评论中了解到,当您从当前视图模型中的其他位置进行更改时,即使触发了更改的属性,也无法工作?如果是这样的话,你确定这是你的虚拟机的同一个实例吗?如果这对你有效,很乐意帮助让我知道,我会添加一个答案!
            await Shell.Current.GoToAsync("changelocation");