I have a fairly long operation that occurs in a background worker. I have the busy indicator set to true before the operation and false when the operation ends, but the indicator never shows. It shows in other parts of my program, but not this one. heres the code:
<xctk:BusyIndicator DockPanel.Dock="Top" Name="ItemSearchBusyIndicator" >
<Grid Height="35" Name="grid1" Width="445" DockPanel.Dock="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="382*" />
<ColumnDefinition Width="39*" />
</Grid.ColumnDefinitions>
<RadioButton Content="Direct Entry" Height="16" HorizontalAlignment="Left" Margin="212,10,0,0" Name="RdoDirectEntry" VerticalAlignment="Top" IsChecked="False" Checked="RdoDirectEntry_Checked" FontSize="14" />
<RadioButton Content="Item Search" Height="16" HorizontalAlignment="Left" Margin="0,10,0,0" Name="RdoItemSearch" VerticalAlignment="Top" Checked="RdoItemSearch_Checked" FontSize="14" />
<RadioButton Content="Route Search" Height="16" HorizontalAlignment="Left" Margin="102,10,0,0" Name="RdoRouteSearch" VerticalAlignment="Top" Checked="RdoRouteSearch_Checked" FontSize="14" />
<RadioButton Content="File System Search" Height="16" HorizontalAlignment="Left" Margin="310,11,0,0" Name="RdoFileSystem" VerticalAlignment="Top" FontSize="14" Grid.ColumnSpan="2" Checked="RdoFileSystem_Checked" />
</Grid>
</xctk:BusyIndicator>
private void CboItemId_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
BackgroundWorker _backgroundWorker = new BackgroundWorker();
_backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
_backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_backgroundWorker_RunWorkerCompleted);
ItemSearchBusyIndicator.IsBusy = true;
// Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
if (RdoItemSearch.IsChecked == false) return;
backgroundWorker_DoWork(null, null);
// Mouse.OverrideCursor = System.Windows.Input.Cursors.Arrow;
ItemSearchBusyIndicator.IsBusy = false;
}
public void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
if (CboItemId.SelectedValue == null) return;
if (CboItemId.SelectedValue.ToString() != string.Empty)
LoadItemData(CboItemId.SelectedValue.ToString());
}
public void LoadItemData(string itemId)
{
Axapta ax = new Axapta();
files.Clear();
try
{
ax.Logon(Settings.Default.Server, null, Settings.Default.Test, null);
AxaptaContainer path = (AxaptaContainer)ax.CallStaticClassMethod(Settings.Default.ClassName, Settings.Default.ItemData, itemId);
for (int i = 1; i <= path.Count; i++)
{
AxaptaContainer somestring = (AxaptaContainer)path.get_Item(i);
for (int j = 1; j <= somestring.Count; j += 2)
{
string extension = Path.GetExtension(somestring.get_Item(j + 1).ToString().ToLower());
if (extension == ".jpg"
|| extension == ".jpeg"
|| extension == ".gif"
|| extension == ".png"
|| extension == ".bmp"
|| extension == ".pdf")
/* key=path - value=description */
files.Add(somestring.get_Item(j + 1).ToString(), somestring.get_Item(j).ToString());
}
}
if (path.Count == 0)
{
MessageBox.Show("No Documents Found");
}
_canvas.Children.Clear();
LoadPictures();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
ax.Logoff();
}
}
The mouse override in CboItemId_SelectionChanged works fine when i use it, but i'd rather use the busy indicator. the indicator does pop up AFTER the operation if i just set it to true, and never set it to false.