如何从代码后面启动我的BusyIndi​​cator

时间:2014-12-29 14:09:54

标签: c# wpf winforms busyindicator

我有这个用户控件:我将此用户控件添加到我的Winforms应用程序(简单的BusyIndi​​cator):

<UserControl x:Class="MyApp.UserControl1"             
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit;assembly=Xceed.Wpf.Toolkit"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <xctk:BusyIndicator x:Name="busyIndicator" IsBusy="{Binding IsBusy}"  />
    </Grid>
</UserControl>



   public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        public void SetIndicator(bool isBusy)
        {
            busyIndicator.IsBusy = isBusy;
        }
    }

现在,从我的主要表单开始,我尝试启动BusyIndocator

UserControl1 uc = new UserControl1();
uc.SetIndicator(true);

此外,如果我将IsBusy="{Binding IsBusy}"更改为IsBusy="true,我可以看到我的BusyIndi​​cator但我无法阻止它。

但是什么都没发生,我做错了什么?

1 个答案:

答案 0 :(得分:0)

由于您不熟悉WPF,因此不要使用数据绑定,请使用代码设置IsBusy的值。

<xctk:BusyIndicator x:Name="busyIndicator" /> //remove IsBusy="{Binding IsBusy}"

在您的表单中,定义UserControl1的实例,并为其命名uc;

public partial class MyForm : Form
{        
    UserControl1 uc; //this is the "instance".
    public MyForm ()
    {
        InitializeComponent();
        uc = new UserControl1();
        uc.SetIndicator(true); //start the busy indicator
        this.elementHost1.Child = uc;
    }
}

如果你想阻止它,请致电

uc.SetIndicator(false); //stop the busy indicator