OK私は今、実用的なソリューションを持っています。
私は私はそのアニメーションを含むUserControlを持っています。これは、XAMLコードのどこかに、<customControls:LoadingAnimation x:Name="LoadingAnimation" />
のように配置されています。私はそのアニメーションをロード ()BeginInvokeメソッドを呼び出す前に、私は、時間のかかる作業を行うためにボタンをクリックすると今
LoadingAnimation.Show();
を呼び出すことによってneedeときに、このコントロールがロードされます。
その後、ハードワークが終了したら、私はLoadingAnimation.Hide().
と呼んでいます。私は他の人のためのコードを追加します:
private void SearchClick(object sender, RoutedEventArgs e)
{
LoadingAnimation.Show();
new StringDelegate(DoSearch).BeginInvoke("TextToSearch", null, null);
}
private void DoSearch(string searchText)
{
object result = /* Do the time consuming work */
Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new ResultDelagate(UpdateUserInterface), result);
}
private void UpdateUserInterface(object result)
{
LoadingAnimation.Hide();
DataContext = result as /* what you want */;
}
ちょっと不思議なことに、どうやってキャンセル部分を解決しましたか? – cwap
ステータスがIsSearchingで、データトリガーを使用してユーザーコントロールを表示および非表示にする – TerrorAustralis