0

我想启动我的进度条,在数据加载到我之后停止它。问题是我如何从 Windows phone 中的另一个类中阻止它

这是我在 XAML 中声明进度条的第一堂课:

 public class panorama
    {
        progressBar.IsIndeterminate = true;
        progressBar.Visibility = System.Windows.Visibility.Visible;
        App.PanoramaViewModel.LoadData();
    }

这是我的第二节课

  public class panoramaviewmodel 
    {
        public void LoadData()
        {
        }
    }

我喜欢在panoramaviewmodel. 如何解决这个问题?

4

2 回答 2

0

将控件上的绑定Visibility到 aVisibilitybool. ViewModel确保ViewModel实现INotifyPropertyChanged

当您更改ViewModel要折叠的属性时(或者false,如果您选择bool通过转换器使用),绑定到它的控件也将更新。

于 2013-03-15T18:35:44.070 回答
0

假设panorama您引用的类是视图(页面),您有几个选项:

  1. 向视图模型添加一个属性,指示进度条是否应显示不确定状态,然后绑定到该状态。(这是 WP 应用程序中最常用的方法。)

  2. 让视图模型发送一条消息,以指示更改是状态,视图正在侦听并相应地响应。

  3. 向视图模型添加一个事件,该事件在加载指示器应更改时触发,并让页面订阅它并相应地更新指示器。

  4. 将对进度条的引用传递给视图模型,并让它在适当的时候直接更新进度条。(我只是为了完成而将其包括在内,这是出于某种原因在列表中的最后一个。这打破了作为 MVVM 的目标/好处之一的分离)

由于ProgressBar占用了页面上的空间,我还建议不要更改可见性以及更改IsIndeterminite属性。通过始终使其可见(但改变IsIndeterminite状态),您将避免对可视化树进行不必要的更改(以及涉及的重新计算),并可能避免页面上的其他元素响应折叠 ProgressBar 而移动。

于 2013-03-15T20:19:21.377 回答