Xamarin Forms Binding - 访问父属性

时间:2018-06-11 13:24:45

标签: c# xaml xamarin xamarin.forms binding

我无法访问Page的ViewModel属性以将其绑定到IsVisible属性。如果我没有设置BindingContext,我只能绑定它。有没有办法在设置BindingContext的同时访问页面的viewmodel / root属性?

Page 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对象属性,但我想将其绑定到页面的viewmodel

  • IsEventInfoWidgetEnabled
  • IsAvailableShiftInfoWidgetEnabled

1 个答案:

答案 0 :(得分:5)

找到解决方案,您必须指定源,然后设置属性的路径。

首先设置页面名称

<pages:AppContentPage 
xmlns="http://xamarin.com/schemas/2014/forms" 
x:Name="ShiftPage">

之后只需将IsVisible属性绑定到正确的源

IsVisible="{Binding Source={x:Reference ShiftPage}, Path=BindingContext.IsEventInfoWidgetEnabled }"