【问题标题】:setting Stack Layout Visibility to false at start在开始时将 Stack Layout Visibility 设置为 false
【发布时间】:2020-03-27 23:30:48
【问题描述】:

我遇到了一个问题。 我有一个堆栈布局,应该根据从 api 请求加载的数据显示 我已将 isVisible 绑定到 api 响应,它运行良好,但问题是加载需要很短的时间问题是一旦页面打开,堆栈布局仍然可见一段时间,然后根据响应更改可见性

这是我的 XAML

<StackLayout x:Name="FailureResult" IsVisible="{Binding PlaceDetails.isErrorScreen,Converter={StaticResource BoolConverter}}">
       <Label Text="{StaticResource GooglePlaceNotFound}" />
</StackLayout>

请帮我解决上述情况。我希望堆栈布局可见性最初为假,然后根据响应更改可见性 提前致谢

【问题讨论】:

  • 您最好在代码中执行此操作而不是绑定
  • 为什么在获取所有数据之前不使用加载屏幕?否则按照@Jason 所说的做,首先从 StackLayout false 开始
  • @ajit 如果要使用绑定,创建一个布尔属性为false,然后通过api获取所有数据,将此布尔属性更改为true,不要忘记实现INotifyPropertyChanged接口通知更改.
  • @CherryBu-MSFT 谢谢我已经通过 bindind 对最初设置为 false 的属性完成它,然后在 api 调用完成后为该属性分配值
  • @ajit 看来您的问题已经解决了,请发一条回复,并将您的回复标记为答案,希望对其他遇到相同问题的社区成员有所帮助,谢谢。

标签: xaml xamarin xamarin.forms


【解决方案1】:

为 StackLayout 的可见性使用单独的属性。

public bool StackLayoutIsVisible => PlaceDetails != null;

然后,一旦 api 调用完成,就提出你的 on property changed 方法。

PlaceDetails = response;
OnPropertyChanged(nameof(StackLayoutIsVisible));

【讨论】:

  • 谢谢我已经通过绑定一个属性来实现它,直到 api 请求完成
【解决方案2】:

我已经通过绑定一个属性来实现它,直到 api 请求完成。绑定属性最初设置为 false。 api请求完成后,绑定的属性会根据api结果进行更改。

xaml

<StackLayout x:Name="FailureResult" IsVisible="{Binding ErrorVisibility }">
    <Label Text="{StaticResource GooglePlaceNotFound}" />
</StackLayout>

视图模型

 private bool _errorVisibility = false;
        public bool ErrorVisibility
        {
            get
            {
                return this._errorVisibility;
            }
            set
            {
                this._errorVisibility = value;
                this.NotifyPropertyChanged();
            }
        }

APImethod()
{
ErrorVisibility = PlaceDetails.isErrorScreen;
}

【讨论】:

    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2012-04-08
    • 2010-09-30
    相关资源
    最近更新 更多