2013-02-05 4 views
0

내 창에서 사용자 지정 진행률 표시 줄이 포함 된 ViewBox 컨트롤이 있습니다. 디자인 모드에서 Visibility를 Collapsed로 설정했습니다. 특정 순간 (앱에 로그인하는 동안)에만 표시해야하기 때문입니다.코드에서 설정 한 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'에 가시성을 설정할 수 있지만 차이는 없습니다. 내 usercontrol 대신 Label을 사용하면 동일한 효과를 가지므로 Visibility = Visible로 설정하면 레이블이 보이지 않습니다./ – 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가 내 usercontrol을 그릴 수 있습니다.