Xamarin Forms App Shell OnProperty已更改,未更新浮出控件标头视图



我正在将视图模型中的文本属性绑定到 App Shell 滑出菜单的浮出控件标题视图中

初始化应用时,所有更新事件都会正确触发,但是用户可能会转到一个页面来更新其信息

我遇到的问题是,当您导航到此页面并执行更新时,FlyoutHeader 视图不会更新以响应视图模型

滑出菜单是否有特定的东西,这意味着一旦加载它,它就不会响应 onpropertychanged 而改变......?似乎不对

来自 AppShell xaml

<Shell.FlyoutHeader>
<views:FlyoutHeader />
</Shell.FlyoutHeader>

从浮出标题代码隐藏

private LocationsViewModel _vm;
public FlyoutHeader()
{
InitializeComponent();
this.BindingContext = new LocationsViewModel();
}
protected override void OnBindingContextChanged()
{
_vm = BindingContext as LocationsViewModel;

_vm.PropertyChanged += _vm_PropertyChanged;
_vm.SetUserLocation();
}

用户通过浮出控件页视图中的按钮导航到"更改位置"页,如下所示

await Shell.Current.GoToAsync("changelocation");

在我的调试日志中,我可以看到 LocationsViewModel 中的绑定对象"user"确实触发了 OnPropertyChanged 以响应此页面上所做的更改,但随后转到"返回"并打开弹出菜单没有任何变化,我可以看到 PropertyChanged 没有为该视图触发?

我认为 OnPropertyChanged 绑定的全部意义在于即使加载了视图,也会发生更新以导致视图响应?

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

这样做将解决您的问题

祝你好运!

相关内容

  • 没有找到相关文章

最新更新