c# - 如何在 Xamarin.Forms 的选项卡式页面中的页面之间共享值?

标签 c# xaml xamarin.forms binding tabbedpage

当我手术后在医院里时,插着导管,被迫用铅笔和一张纸计算 body 的液体摄入量/流出量(!!!)...我陷入了困境在 Xamarin.Forms 的选项卡式页面上共享页面之间的值。

我有一个页面 - 摄入/流出,其中是用于总摄入和流出更新的条目元素和按钮元素。用户可以写下液体量并点击按钮将该部分添加到消耗的液体总量中。流出也是如此。

我的第二页是概述 - 概述页面。我想在“概述”页面上用两个标签显示液体总量(摄入和流出)。这就是我陷入困境的地方。

我尝试将 Label.Text 绑定(bind)到概述的页面 View 模型中的属性,但我不知道如何从 Intake/Outflow 页面的代码后面更新概述 View 模型属性。 我还尝试使用应用程序的属性级别,这对于 OnSleep、OnResume 程序来说很方便,我可以在其中存储用户的实际值以供进一步使用。再次,我陷入了来自“摄入/流出”页面后面的代码更新“概述”页面上的标签的困境。另外,我不知道如何在 XAML 中正确绑定(bind) App.SomeProperty 的属性,这也可能是问题所在。

在这种特殊情况下,页面之间共享 View 模型对我来说不是一个选项。

我的逻辑有问题吗?我应该如何完成这项任务?有人可以分享一些具有上述逻辑的例子吗?

最佳答案

只需使用 MessagingCenter,喜欢 关于OverviewViewModel

public OverviewViewModel(){
 MessagingCenter.Subscribe<IntakeOutflowViewModel, string>(this, "LabelChanged", (sender, label)=>{
   this.LabelValue = label; // use value of label from IntakeOutflowViewModel
})
}

以及 IntakeOutflowViewModel

public ICommand ButtonCommand => new Command(()=>{
    MessagingCenter.Send<IntakeOutflowViewModel,string>(this, "LabelChanged", LabelValue);
})
public string LabelValue{...,...} // The value you bind on view

希望对你有帮助

关于c# - 如何在 Xamarin.Forms 的选项卡式页面中的页面之间共享值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57991004/

相关文章:

mysql - 如何在没有 Web 服务的情况下将 Xamarin.Forms 应用程序连接到 mysql 数据库

c# - Entity Framework 代码优先异常 "Duplicate entry ' 0' for key ' PRIMARY'"

c# - 如何在 Xamarin forms Android 和 iOS 中实现 Deeplink(Universal Linking)?

c# - 从绑定(bind)到我的 XAML 中的事件调用我的 ViewModel 中的命令?

c# - 在 Xamarin Forms 应用程序中获取当前页面名称

xamarin.forms - Xamarin 形式 : How to copy an entry value?

xamarin - 我是否需要停止在 UI 线程中运行的方法?

c# - 将 OpenXML 创建的 Excel 电子表格导出到客户端

c# - WPF 中 ComboBoxItems 的数据绑定(bind) IsHighlighted

c# - WPF 自定义形状