Silverlight toolkit:BusyIndicator的使用

toolkit:BusyIndicator 是一个加载动画的容器控件,当这个控件被激活时,容器内容会被锁定,就类似弹出一个层,底部门内容均不可操作,容器中间有一个加载动画,

这个动画可以自己的定义,也可以可以是模板。下面看一个例子

1:新建一个用户控件,前台代码如下:

<Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal" Grid.Row="0">
            <Button x:Name="btnstart" Content="启动" Width="75" Height="30" Click="btnstart_Click" />
            <Button x:Name="btnstop" Content="停止" Width="75" Height="30" Click="btnstop_Click" />
        </StackPanel>
        <toolkit:BusyIndicator x:Name="Indicator" Grid.Row="1">
            <sdk:DataGrid x:Name="dglist" />
        </toolkit:BusyIndicator>
    </Grid>

补充一下BusyIndicator 是toolkit的一个控件,所以要先添加toolkit的命名空间,一般在右边工具栏托到界面,系统就自动回吧引用代码写到头部。

上面的界面很简单,一个启动按钮,一个停止按钮,然后是一个BusyIndicator容器,容器中间放了一个表格控件,注意,只有在容器里面的内容在加载状态时才会受影响,容器外面的不管。

所以,一般要把内容都写到这个容器里面。

下面看后台代码

 private void btnstart_Click(object sender, RoutedEventArgs e)
        {
            Indicator.IsBusy = true;
            DeskCollection desks = new DeskCollection();
            for (int i = 0; i < 21; i++)
            {
                int state = 0;
                if (i > 6)
                    state = 1;
                if (i > 10)
                    state = 2;
                if (i > 15)
                    state = 3;

                Desk d = new Desk() { Id = i.ToString("000"), Name = "A" + i.ToString("00"), State = state, Count = 5, Grt = 555522.52F, Booker = "叶先生和刘先生", BookCount = 3 };
                desks.Add(d);
            }
            dglist.ItemsSource = desks;
        }

        private void btnstop_Click(object sender, RoutedEventArgs e)
        {
            Indicator.IsBusy = false;
        }

 重点:Indicator.IsBusy = true;  Indicator.IsBusy = false;  当为true时,就会激活加载状态,为false时就停止。

效果图如下:

补充一点:如果是动态加载用户控件的设计界面,需要获取父控件的元素代码如下

  BusyIndicator busyIndicator = ((FrameworkElement)App.Current.RootVisual).FindName("Indicator") as BusyIndicator;

其中"Indicator"就是控件名称
            busyIndicator.IsBusy=true;

原文地址:https://www.cnblogs.com/Rmeo/p/3054936.html