Как запустить мой BusyIndicator из кода позади
У меня есть пользовательский элемент управления: я добавил этот пользовательский элемент управления в свое приложение Winforms (простой BusyIndicator):
<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
я вижу свой BusyIndicator, но потом не могу его остановить.
Но ничего не происходит, что я делаю не так?
1 ответ
Решение
Не используйте привязку данных, так как вы не знакомы с 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