2013-02-05 28 views
0

在我的窗口上,我有一個ViewBox控件,它包含一個自定義的進度條。我將其可見性設置爲在設計模式下摺疊,因爲我需要在特定時刻(登錄到應用程序時)顯示它。從代碼中設置的ViewBox的可見性

在我的進度條,它是usercontrol,我有VisibilityChanged事件的事件處理程序,我停止並開始我的動畫。

當用戶點擊登錄按鈕時,我需要顯示此ViewBox直到登錄完成並在成功後再次摺疊。但是,當我(在代碼後面)設置ViewBox.Visibility = Visible時,它不顯示。

有人可以告訴我爲什麼,或者如何解決它?

XAML:

<Viewbox x:Name="cpProgress" Width="50" Height="50" HorizontalAlignment="Center" VerticalAlignment="Bottom" Grid.Row="1" Visibility="Collapsed" > 
     <lc:CircularProgress />    
    </Viewbox> 

感謝

+0

你能提供整個xaml(帶網格定義)嗎? – daryal

+0

Wpf不會在不可見的元素上啓動動畫。所以一定要先設置可見性,然後再開始動畫。你能直接在CircularProgress上設置可視性嗎? – Marius

+0

是的,我可以在'CircularProgress'上設置可視性,但這沒什麼區別。如果我使用標籤而不是我的用戶控件,則具有相同的效果=>設置「可見性=可見」,但無法看到標籤:/ – sinkien

回答

1

變化ViewBox.Visibility = VisiblecpProgress.Visibility = Visible並確保電網對第1行

+0

ViewBox的高度爲155的行(他的ViewBox爲方形50x50),所以我認爲這裏的空間不會是一個問題,或者會呢? 'cpProgress'是視框的名稱。如果我在ViewBox上設置Visibility,它不會渲染,在我的USerControl('lc:CircularProgress')上設置可見性具有相同的效果,即不渲染。 – sinkien

0

定義一個適當的行高,我終於來到了這個解決方案問題。這真的很簡單:)。 我剛剛忘了,如果我在同一個線程中運行登錄過程,因爲我的窗口在,UI將掛起,直到登錄完成。所以解決方案是產生一個新線程,在其上下文中運行登錄,並等待completed標誌在UI線程中設置。登錄過程必須以異步方式運行,因此UI可以繪製我的用戶控件。