【发布时间】:2019-08-05 01:24:11
【问题描述】:
我有一个上面有ProgrressBar 的应用程序。
我还有一个充当DownloadService 的类,因为它在多个 ViewModel 中使用。
如您所见,DownloadData 函数模拟它下载内容并以百分比跟踪已下载的数据总量,它从 0 到 100。
如何使我的ProgressBar 获得与totalDownloaded 相同的值,而不将 MainWindowViewModel 作为参数传递。
主窗口
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<StackPanel>
<ProgressBar Height="25"
Maximum="100"
Value="{Binding ProgressValue}"/>
<Button HorizontalAlignment="Center"
Width="100" Height="25"
Content="Start"
Command="{Binding StartDownloadCommand}"/>
</StackPanel>
MainWindowViewModel
class MainWindowViewModel : ObservableObject
{
private int _progressValue;
public int ProgressValue
{
get { return _progressValue; }
set
{
_progressValue = value;
OnPropertyChanged();
}
}
DownloadService ds = new DownloadService();
public RelayCommand StartDownloadCommand { get; set; }
public MainWindowViewModel()
{
StartDownloadCommand = new RelayCommand(o => { ds.DownloadData(); }, o => true);
}
}
还有 DownloadService
class DownloadService
{
public void DownloadData()
{
int totalDownloaded = 0;
for (int i = 0; i < 101; i++)
{
totalDownloaded++;
Console.WriteLine(totalDownloaded);
}
}
}
【问题讨论】: