我想启动我的进度条,并在加载数据后停止它。问题是如何从Windows手机中的另一个类停止它
这是我在XAML中宣布进度条的第一堂课:
public class panorama
{
progressBar.IsIndeterminate = true;
progressBar.Visibility = System.Windows.Visibility.Visible;
App.PanoramaViewModel.LoadData();
}
这是我的第二堂课
public class panoramaviewmodel
{
public void LoadData()
{
}
}
我喜欢停止panoramaviewmodel
中的进度条。怎么解决这个问题?
答案 0 :(得分:0)
将控件上的Visibility
绑定到Visibility
中的bool
或ViewModel
媒体资源。确保ViewModel
实施INotifyPropertyChanged。
您将更改要折叠的ViewModel
中的属性(或false
,如果您选择通过转换器使用bool
),那么绑定到它的控件也将更新。
答案 1 :(得分:0)
假设您引用的panorama
类是视图(页面),您有几个选项:
向viewmodel添加一个属性,指示进度条是否应显示不确定状态,然后绑定到该状态。 (这是WP应用程序中最常用的方法。)
让viewmodel发送一条消息,指示视图正在侦听并发生变化状态,并相应地做出响应。
向视图模型添加一个事件,当应该更改加载指示器并让页面订阅它并相应地更新指示器时触发该事件。
将对进度条的引用传递给viewmodel,并在适当时直接更新进度条。 (我只是将其包括在内以便完成,这是列表中的最后一个原因。这打破了分离,这是MVVM的目标/好处之一)
由于ProgressBar
会占用页面空间,我还建议您不要更改“可见性”以及更改IsIndeterminite
属性。通过始终使其可见(但改变IsIndeterminite
状态),您将避免对可视树(以及涉及的重新计算)进行不必要的更改,并可能避免页面上的其他元素移动以响应折叠ProgressBar。