Xamarin Forms绑定——访问父属性

6

我无法访问页面的ViewModel属性,以便将其绑定到IsVisible属性。只有在不设置BindingContext时才能进行绑定。是否有一种方法可以在设置BindingContext的同时访问页面的视图模型/根属性?

页面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;

IsVisible属性只能绑定到EventViewModel对象的属性,但我想将其绑定到页面的视图模型上。

  • IsEventInfoWidgetEnabled
  • IsAvailableShiftInfoWidgetEnabled

请解释一下你的ViewModel。它有三个属性吗?"EventViewModel","_IsEventInfoWidgetEnabled"和"_IsAvailableShiftInfoWidgetEnabled"?尽管如此,你的INPC实现在哪里呢?你应该了解mvvm。 - Csharpest
很不幸,我正在使用一种定制/非常规的MVVM实现(项目要求)。是的,ViewModel具有这3个属性。 - Iliut Andrei
1个回答

13

找到解决方案,您需要指定源,然后将路径设置为属性。

首先设置页面名称。

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接