2011-01-18 5 views
0

WPF ProgressBar에 혼란 스럽습니다. 다음은이를 표시하기 위해 작성한 코드입니다.WPF ProgressBar에 진행률이 표시되지 않습니다.

<ProgressBar Height="31" Margin="15" Name="progressBar" 
VerticalAlignment="Top" IsIndeterminate="True" /> 

알다시피,이 코드는 작동시키기에 충분합니다. 하지만 그것은 내 프로젝트에서 작동하지 않습니다. 나는 창을 보여줄 때 (Popup은 사실 xbap 프로젝트이므로) progressbar는 애니메이션을 보여주지 않지만 보이지는 않습니다.

아직 백그라운드 스레드가 없으므로 UI ​​스레드가 차단되지 않습니다.

무엇이 잘못 되었나요?

+2

ProgressBar의 기본 스타일을 변경 했습니까? –

+0

디자인 타임에 작동합니까? – JYL

+0

표시 한 내용은 화면에 표시되도록 진행률 막대를 설정 한 방법 만 보여줍니다. 업데이트하는 방법을 보여주는 코드를 제공해야합니다. (원하는 내용이라고 생각합니다. 질문이 명확하지 않습니다.) –

답변

0

불확실한 진행 막대가 제대로 표시되지 않는 Windows 테마를 사용할 수 있습니다.

3

아직 배경 스레드가 없으므로 UI ​​스레드가 차단되지 않습니다.

나는 그것이 틀렸다고 생각합니다. 그것은 당신 문제입니다. 백그라운드 스레드가 없으므로 UI ​​스레드 이 (가)이 차단되었습니다. 진행률 표시 줄을 업데이트하는 메서드가 UI 스레드 (백그라운드 스레드에서 실행 중이 지 않은 경우)에서 실행 중이면 메서드가 실행되고 컨트롤에 도달 할 때까지 진행률 막대가 업데이트되지 않습니다. 발송인에게 반송되었습니다.

BackgroundWorker을 사용하여 백그라운드 스레드에서 장기 실행 메서드를 실행하고 ProgressChanged 이벤트를 발생시키고 처리하여 진행률 표시 줄을 업데이트해야합니다. 이벤트 핸들러는 UI 스레드에서 실행되며 UI 객체를 업데이트 할 수 있습니다.

+0

오른쪽. 자세한 내용 - http://stackoverflow.com/questions/4956902/are-background-thread-really-helpful-if-were-updating-our-gui-regularly – Rohit

0

시도하십시오 이러한 코드

 ProgressBar test=new ProgressBar(); 
     Duration dr = new Duration(TimeSpan.FromSeconds(timespan)); 
     DoubleAnimation da = new DoubleAnimation(determination, dr); 
     test.IsIndeterminate = false; 
     test.Visibility = Visibility.Visible; 
     test.BeginAnimation(ProgressBar.ValueProperty, da); 

는 ProgressBar 구성 작업을 원하는 경우에, 당신은 애니메이션 인스턴스를 생성하고,이 도움이 ProgressBar.May로 설정해야합니다!

관련 문제