Xamarin 表单绑定 - 访问父属性
Posted
技术标签:
【中文标题】Xamarin 表单绑定 - 访问父属性【英文标题】:Xamarin Forms Binding - access parent property 【发布时间】:2018-11-20 18:24:33 【问题描述】:我无法访问页面的 ViewModel 属性以将其绑定到 IsVisible 属性。如果我不设置BindingContext,我只能绑定它。有没有办法在设置 BindingContext 的同时访问页面的 viewmodel/root 属性?
页面 XAML:
<eventViews:EventInfoWidget BindingContext="Binding EventViewModel" IsVisible="Binding IsEventInfoWidgetEnabled" />
<eventViews:AvailableShiftInfoWidget BindingContext="Binding EventViewModel" IsVisible="Binding IsAvailableShiftInfoWidgetEnabled"></eventViews:AvailableShiftInfoWidget>
视图模型:
public EventViewModel EventViewModel get;
public bool IsEventInfoWidgetEnabled => _IsEventInfoWidgetEnabled.Value;
public bool IsAvailableShiftInfoWidgetEnabled => _IsAvailableShiftInfoWidgetEnabled.Value;
IsVisibile 属性只能绑定到 EventViewModel 对象属性,但我想将它绑定到页面的视图模型
IsEventInfoWidgetEnabled IsAvailableShiftInfoWidgetEnabled【问题讨论】:
请解释您的视图模型。它有3个属性? “EventViewModel”、“_IsEventInfoWidgetEnabled”和“_IsAvailableShiftInfoWidgetEnabled”?尽管如此,您的 INPC 实施在哪里?请阅读 mvvm。 不幸的是,我使用的是定制的/非传统的 mvvm 实现(项目要求)。是的,视图模型具有这 3 个属性。 【参考方案1】:找到解决方案,你必须指定来源,然后设置属性的路径。
先设置页面名称
<pages:AppContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
x:Name="ShiftPage">
之后只需将 IsVisible 属性绑定到正确的源
IsVisible="Binding Source=x:Reference ShiftPage, Path=BindingContext.IsEventInfoWidgetEnabled "
【讨论】:
以上是关于Xamarin 表单绑定 - 访问父属性的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin 表单 - GetBindingExpression
Xamarin 表单从 listview 绑定到 viewmodel