我有一个非常简单的TabBar,其中包含一些ShellContent元素,如下所示:
<ShellContent
Title="Staying at Home"
Icon="house_user_solid.png"
ContentTemplate="{DataTemplate views:PatientEdSelectionPage}">
<views:PatientEdSelectionPage />
</ShellContent>
字符串
ViewModel看起来像这样:
namespace Lati2d.ViewMode
{
public partial class PatientEdViewModel : BaseViewModel
{
public ObservableCollection<PatientEd> PatientEds { get; } = new();
public ObservableCollection<Lati2d.Model.Condition> Conditions { get; } = new();
public string PatientEd { get; set; }
public string PatientEdTypeId { get; set; }
public Guid ConditionId { get; set; }
public string ConditionName { get; set; }
public Lati2d.Model.Condition SelectedCondition { get; set; }
PatientEdService _patientEdService;
ConditionService _conditionService;
public PatientEdViewModel(
PatientEdService patientEdService,
ConditionService conditionService)
{
_patientEdService = patientEdService;
_conditionService = conditionService;
Title = "Patient Education Titles";
}
}
}
型
这一切都工作得很好。我现在试图从ShellContent获取一个值到页面。我很乐意从页面传递某种参数或使用某种引用,返回到'编译器'。
我已经尝试了QueryParameter属性和其他一些方法,大多数似乎使用直接导航,但似乎不能让它工作。
1条答案
按热度按时间yqlxgs2m1#
(转载答案)
而不是内联
PatientEdSelectionPage
:字符串
然后考虑扩展它,您可以轻松地添加属性:
型
您可能还喜欢使用
StaticResource
型
[Old答案]
这个答案涉及到通过
GlobalViewModel
单例在整个应用程序中传递属性。型
当你使用Dependency Injection时,可以这样设置:
型
在
AppShell.xaml.cs
中,您可以访问GlobalViewModel
单例。这样,Shell就可以通过GlobalViewModel
单例提供值。型
因为
GlobalViewModel
是单例,所以你可以从Shell
设置属性,也可以在PatentEdViewModel
中使用相同的属性。对于后者,你可以通过依赖注入来配置PatentEdViewModel
:型
关于在
App
BindingContext
中声明GlobalViewModel
的注解应该允许通过设置Source={RelativeSource AncestorType={x:Type viewmodel:GlobalViewModel}}
来访问绑定中的GlobalViewModel
,但是,将其设置为对单个视图模型的依赖也可以。