2011-04-12 8 views
3

데이터 바인딩을 사용하여 진행률 막대를 업데이트하려고합니다. XAML 파일은 진행 막대가 포함 최대가 설정되고 내 "업데이트"방법WPF ProgressBar가 업데이트되지 않습니다?

private int progressBarMax; 
    public int ProgressBarMax 
    { 
     get 
     { 
      if (this.progressBarMax == 0) 
       this.progressBarMax = 1; 
      return this.progressBarMax; 
     } 
     set 
     { 
      this.progressBarMax = value; 
     } 
    } 

    private int progressBarValue; 
    public int ProgressBarValue 
    { 
     get 
     { 
      return progressBarValue; 
     } 
     set 
     { 
      progressBarValue = value; 
     } 
    } 

:

<ProgressBar Height="23" Name="progressBar" VerticalAlignment="Bottom" Margin="207,444,0,0" Minimum="0" Maximum="{Binding ProgressBarMax}" Value="{Binding ProgressBarValue}" /> 

내 관련 C# 클래스는 게터에게 & 세터가 포함되어 있습니다. 예 : this.progressBarMax = 100;입니다. 루프에서 progressbar 값의 값은 + = 1입니다. Application.DoEvents()를 사용한 업데이트를 보려면 나중에 스레드를 구현하십시오. 데이터 바인딩은 올바르게 작동해야합니다. 다른 구성 요소도 제대로 작동하기 때문입니다.

왜 내 진행 상황 표시 줄이 업데이트되지 않습니까?

도움 주셔서 감사합니다.

+0

"Application.DoEvents()"의 기능은 무엇입니까? 표준 WPF 함수가 아닙니다. – Jens

+0

알아. 내가 말했듯이, 곧 스레드로 대체 될 것이지만, 일부 테스트의 경우 루프 내에서 변경 사항이 표시됩니다. – oopbase

답변

0

내 코드에서 실수를 발견했습니다. 불행히도 공공 장소가 아닌 개인 회원을 변경했습니다. 따라서 this.progressBarValue += 1; 대신 this.ProgressBarValue += 1;을 사용할 때 모든 것이 잘 동작합니다.

1

ProgressBarValue가 변경 될 때마다 ProgressBar에 알릴 수있는 방법을 구현해야합니다. INotifyPropertyChanged 인터페이스를 살펴보십시오.

+0

필자는 본문에서 말한 것처럼 구현되었습니다. 다른 구성 요소는 업데이트되었습니다. MVVM을 사용하여 ViewModelBase가 INotifyPropertyChanged를 확장합니다. – oopbase

+0

@ Forlan07 : 당신의 속성 설정 기는'OnPropertyChanged ("ProgressBarValue")' – Jens

+0

에 대한 호출을 포함해야합니다. 이미 시도했지만 아무것도 일어나지 않을 것 같습니다 ... BTW., 내 목록 상자에 해당 함수를 사용할 필요가 없었습니다. 데이터 바인딩 등. – oopbase

1

UI 컨트롤이 업데이트 된 값을 검색하도록하려면 INotifyPropertyChanged는 어떻게됩니까?

// 다니엘

1

원본 게시물에 실제로 의견을 추가하고 싶지만 답변 텍스트 bax를 통해 입력 한 원본에 관한 질문을 해결해야합니다. 코드를 하나의 단위로 게시 할 수 있습니까? 즉, 바인딩을 완료하기 위해 추가해야하는 모든 코드가 있습니까? 진행률 표시 줄에 대한 최대 값 및 값에 대한 데이터 바인딩을 수행하기 위해 모든 구성 요소를 함께 가져 오는 데 문제가 있으며 상당히 도움이 될 수 있습니다.

관련 문제