【问题标题】:Create Activity Indicator with C #使用 C# 创建活动指示器
【发布时间】:2018-08-12 16:25:10
【问题描述】:

是否可以在不使用 XAML 的情况下创建活动指示器?我已经在 .cs 中准备好了一个视图,我不想重新创建它。

【问题讨论】:

  • 没有 XAML 是什么意思。你已经有什么样的看法了?您是使用 WPF 还是 UWP 进行开发?
  • 糟糕,我忘记描述了。我正在使用 xamarin.forms(适用于 Android、iOS 和 UWP)制作跨平台应用程序。我不知道它是否正确,但我正在基于 C# 创建我的视图。
  • 是的,您可以在 XAML 中执行的任何操作都应该可以在 C# 中执行。您只需将其添加到您在 C# 中创建的布局中,然后在适当的时候触发它。

标签: c# xaml xamarin.forms cross-platform


【解决方案1】:

您也可以创建每个可以通过 XAML 从代码中创建的控件。请看下面的例子

class MyView : ContentView
{
    AbsoluteLayout _layout;
    ActivityIndicator _activityIndicator;

    void InitializeControls()
    {
        _layout = new AbsoluteLayout();
        this.Content = _layout;

        // ...

        _activityIndicator = new ActivityIndicator();
        AbsoluteLayout.SetLayoutFlags(_activityIndicator, AbsoluteLayoutFlags.PositionProportional);
        AbsoluteLayout.SetLayoutBounds(_activityIndicator, new Rectangle(.5,.5,-1,-1));
        _layout.Children.Add(_activityIndicator);
    }

    async void UpdateData()
    {
        _activityIndicator.IsRunning = true;
        this.Data = GetData();
        _activityIndicator.IsRunning = false;
    }
}

InitializeControls 中,我们首先初始化一个布局(在本例中为AbsoluteLayout),然后创建一个新的ActivityIndicator。我们使用AbsoluteLayout.Set... 方法设置AbsoluteLayout.LayoutFlagsAbsoluteLayout.LayoutBounds(这些是附加属性的设置器,请参阅here)。最后我们将ActivityIndicator 添加到AbsoluteLayout

UpdateData 方法是一个虚构的方法,用于展示在更新视图数据时如何使用ActivityIndicator。我们首先在ActivityIndicator 上设置IsRunning 以显示它,然后获取数据并最后取消设置IsRunning 以隐藏`Activity

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    相关资源
    最近更新 更多