별도로 열린 창의 진행률 막대를 다른 클래스의 배경 작업자로부터 업데이트하는 데 문제가 있습니다.별도의보기가 백그라운드 작업자에서 업데이트되지 않음 Mvvm
프로그램 실행은 다음과 같이 진행됩니다
- MainWindow를로드
- 클릭 버튼 팝업 진행 표시 줄을 몇 가지 작업을하고 열 (새로 열린 창)
- 배경 노동자가 및 보고서를 작동하지 팝업 진행률 표시 줄로 진행
- 팝업 진행률 표시 줄 잘하면 업데이 트됩니다.
값은 백그라운드 작업자가 단계별 디버거에서 수정 한 것으로 보이는 속성에 바인딩됩니다. 이러한 변경 사항은 팝업 진행률 막대보기에 반영되지 않습니다. 그러나 수동으로 시도하고 진행률 표시 줄 속성 값을 설정하면 제대로 작동하기 때문에 바인딩이 끊어지지 않습니다.
또한 초기에 시작한 MainWindow보기 안에 진행률 표시 줄을 넣으면 정상적으로 업데이트됩니다. 어떤 제안 ?? 여기
가 일부 코드입니다 : 전체 솔루션 파일에 대한MainWindowViewModel
public class MainWindowViewModel: BaseViewModel
{
private void PerformSomeAction()
{
var popUpProgressBar = new PopUpProgressBarViewModel();
popUpProgressBar.Show(popUpProgressBar);
var worker = new BackgroundWorker { WorkerReportsProgress = true };
worker.ProgressChanged += delegate(object s, ProgressChangedEventArgs args)
{
if (args.ProgressPercentage != popUpProgressBar.Progresser)
{
Progresser = args.ProgressPercentage;
popUpProgressBar.Progresser = args.ProgressPercentage;
}
};
worker.DoWork += delegate
{
for (int i = 0; i < 101; i++)
{
worker.ReportProgress(i);
System.Threading.Thread.Sleep(10);
}
MessageBox.Show("Done");
};
worker.RunWorkerAsync();
}
private int _progresser;
public int Progresser
{
get { return _progresser; }
set
{
if (_progresser == value) return;
_progresser = value;
OnPropertyChanged("Progresser");
}
}
private RelayCommand _startProcessing; //set private member
public ICommand StartProcessing //public field used by xaml binding
{
get
{
return _startProcessing = MakeCommandSafely(_startProcessing,() => PerformSomeAction());
}
}
}
PopUpProgressBarViewModel
public class PopUpProgressBarViewModel : BaseViewModel
{
private PopUpProgressBar _popUpProgressBar;
public void Show(PopUpProgressBarViewModel context)
{
_popUpProgressBar = new PopUpProgressBar {DataContext = context};
_popUpProgressBar.Show();
}
private int _progresser;
public int Progresser
{
get { return _progresser; }
set
{
if (_progresser == value) return;
_progresser = value;
OnPropertyChanged("Progresser");
}
}
}
(일이 뭐죠 그래서 당신이 볼 수), see here
빌어 먹을 하하에 그냥 한 줄을 PopUpProgressBar을 변경할 수 있습니다. 감사합니다 힙을 :) – Lukehb