【问题标题】:Xamarin Forms Binding - access parent propertyXamarin 表单绑定 - 访问父属性
【发布时间】: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 个属性。

标签: c# xaml xamarin xamarin.forms binding


【解决方案1】:

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

先设置页面名称

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

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

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

【讨论】:

    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 2020-07-03
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2017-07-15
    • 2017-01-18
    相关资源
    最近更新 更多