我想以简单的方式使用进度条。我有一个查询,用于在用户单击按钮时将数据返回到网格。我想在单击按钮时启动进度条,并在数据返回到网格时停止进度条。
我只想让进度条继续(IsIndeterminate =“True”)以显示实际发生了某些事情。
有没有办法将进度条的开始和停止绑定到视图模型中的属性或命令?
感谢您的任何想法。
答案 0 :(得分:1)
您可以公开一个属性,然后使用该属性来触发ProgressBar
的可见性,但最好使用包含进度条的控件并公开打开/关闭它的属性。例如,扩展WPF工具包中的BusyIndicator
。
答案 1 :(得分:1)
使用IsIndeterminate
属性作为属性绑定ViewModel上的属性;在本例中,我的标题为IsBusy
。
public partial class Window1 : Window
{
public MyViewModel _viewModel = new MyViewModel();
public Window1()
{
InitializeComponent();
this.DataContext = _viewModel;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//this would be a command in your ViewModel, making life easy
_viewModel.IsBusy = !_viewModel.IsBusy;
}
}
public class MyViewModel : INotifyPropertyChanged
{
private bool _isBusy = false;
public bool IsBusy
{
get
{
return _isBusy;
}
set
{
_isBusy = value;
PropertyChangedEventHandler handler = PropertyChanged;
if(handler != null)
handler(this, new PropertyChangedEventArgs("IsBusy"));
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
在这种情况下,XAML使用Button
的点击事件处理程序;但是在您的实例中,您只需绑定操作,它将开始处理ViewModel上的命令。
<Grid>
<ProgressBar Width="100" Height="25" IsIndeterminate="{Binding IsBusy}"></ProgressBar>
<Button VerticalAlignment="Bottom" Click="Button_Click" Width="100" Height="25" Content="On/Off"/>
</Grid>
当您开始工作并结束工作时,修改ViewModel上的IsBusy
属性将启动并停止不确定行为,提供活动/不 - 你追求的活跃视觉外观。