2017-02-14 51 views
0

我用一個很好的LoadingIcon(https://elegantcode.com/2009/08/21/a-simple-wpf-loading-animation/)下載了一個項目。 我將它引用到我的主項目中,但我不確定如何將它應用到我的應用程序中。如何在現有的SplashScreen中使用外部的LoadingIcon項目? (WPF)

我把xmlns:control="clr-namespace:LoadingControl.Control"放到了主要的Splash.xaml中,然後嘗試通過<control:LoadingAnimation HorizontalAlignment="Center" VerticalAlignment="Center"/> 來調用它,這對我沒有用。 我也嘗試複製LoadingAnimation.xaml的整個XML代碼,但那也不起作用。

+0

請張貼代碼重現該問題,並指定它如何不工作。 – FINDarkside

回答

0

啓動屏幕的想法是在應用程序初始化時顯示一些動畫。

但是:這隻會在初始化爲而不是的UI-Thread上負責呈現UI時運行。因爲如果是這樣的話,UI將不會有更新的時間。

嘗試在新的/不同的線程(Task.Factory.StartNew())

請記住,很多事情WPF必須在UI線程上運行,所以你可能需要調用運行初始化代碼Dispatcher.Invoke()在這種情況下。

0

使用這樣的事情在你的主窗口的構造函數:

public MainWindow() 
{ 
    InitializeComponent(); 

    var scheduler = TaskScheduler.FromCurrentSynchronizationContext(); 
    Task.Factory.StartNew(delegate { }).ContinueWith(async delegate 
    { 
     Window win = new Window() { 
      WindowStyle = WindowStyle.None, Topmost = true, ResizeMode = ResizeMode.NoResize, ShowInTaskbar = false, SizeToContent= SizeToContent.WidthAndHeight, 
      WindowStartupLocation = WindowStartupLocation.CenterOwner, Owner = this 
     }; 

     win.Content = new LoadingAnimation(); 

     win.Show(); 
     await Task.Delay(TimeSpan.FromSeconds(4)); 
     win.Close(); 
    }, scheduler); 

} 
相關問題