【发布时间】:2017-07-09 11:26:01
【问题描述】:
让ProgressBar 工作有点麻烦。当我启动它时,什么也没有发生,我不明白为什么?
我以为这会启动任务worker.RunWorkerAsync();
下面的示例应该能够被复制并粘贴到新的解决方案中,并在需要时运行以进行测试。
XAML,
<Grid Margin="20">
<ProgressBar
Height="60"
Minimum="0"
Maximum="100"
Value="{Binding Progress, Mode=OneWay}"
Visibility="{Binding ProgressVisibility}"/>
</Grid>
我的代码,
public partial class MainWindow : Window
{
public ProggressbarViewModel PsVm { get; set; }
public MainWindow()
{
InitializeComponent();
PsVm = new ProggressbarViewModel();
}
public class ProggressbarViewModel
{
public ProggressbarViewModel()
{
var worker = new BackgroundWorker();
worker.DoWork += DoWork;
worker.ProgressChanged += ProgressChanged;
worker.RunWorkerAsync();
}
private int _progress;
public int Progress
{
get { return _progress; }
set
{
if (_progress == value) return;
_progress = value;
OnPropertyChanged();
}
}
private void DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(100);
_progress = i;
OnPropertyChanged();
}
}
private void ProgressChanged(object sender, ProgressChangedEventArgs e)
{
Progress = e.ProgressPercentage;
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
任何帮助将不胜感激。
编辑:从这个意义上说,问题是相似的,可能是重复的,但是链接的答案并没有解决我的问题,就像它在重复横幅中所说的那样。
【问题讨论】:
-
@Clint,是的,我看到了那个帖子。对我帮助不大,因为我不知道哪里出错了。