一些背景...
我試圖給點擊按鈕時的視覺反饋...基本上是一個加載彈出消息(使用WPF彈出控件)。問題是...因爲我在UI線程上,並且在同步代碼中按鈕點擊和邏輯發生,彈出窗口出現。我希望彈出窗口顯示在點擊按鈕上,運行一些代碼,然後離開(在代碼運行時彈出窗口應該顯示)。WPF彈出窗口和UI線程
我意識到我可以用線程完成它,但那不是一個選項。我有時間限制,沒有時間來修復應用程序「正確的方式」。
之前,我這樣做是「正確的」正常呻吟聲...
- 我沒有寫的應用程序,只是任務是努力提高性能(和/或知覺性能的)沒有完整的over-haul。
- 在某些時候,我希望我可以重新使用這個應用程序,只有很少的調整現在會削減它。
- 有沒有ViewModel ...代碼是真的,真的耦合到用戶界面。 (就像我說的,我沒有正確的應用程序)
- 由於各種原因,我不能在這種情況下使用線程,而不是沒有打破太多的其他peices和我的時間限制。
那麼,有沒有辦法在這種情況下做到這一點(順便說一句...有沒有視圖模型,我不能創建一個現在監守的邏輯嚴密的UI耦合的)?
流行起來控制
<Popup Name="popLoading" Placement="Center">
<Border CornerRadius="10" Background="#ffffff">
<Grid Width="400" Height="200">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Name="imgLoading" Source="/foo/Images/loading.png" />
<TextBlock Name="txtLoading" Text="Retreiving data..."/>
</Grid>
</Border>
</Popup>
按鈕單擊
private void MyButton_Click(object sender, RoutedEventArgs e)
{
popLoading.IsOpen = true;
//Do Some Stuff hopefully popup is showing up on the screen.
popLoading.IsOpen = false;
}
什麼是如此艱難關於把一個線程上的邏輯,認真嗎? –
@ H.B。在應用程序的其他部分發生了一些事情,導致同步問題。某些事情必須發生,以便線程中斷(我已經嘗試過),但不是那麼困難,它會花費太長時間。如果在這裏沒有任何快速解決方案,那麼我只會忘記彈出窗口,直到我真的可以修復該應用程序。 – AGoodDisplayName
您可能可以使用['DispatcherFrames'](http://msdn.microsoft.com/zh-cn/library/system.windows.threading.dispatcherframe.aspx)... –