如何使用 MVVM 显示 Windows Phone 8 应用程序的加载栏

本文关键字:应用程序 加载 Phone 何使用 MVVM 显示 Windows | 更新日期: 2023-09-27 18:36:34

如何从视图模型中调用负载杆?带有飘过的小点的酷炫的那个。我似乎找不到合适的必应短语来搜索它。

如何使用 MVVM 显示 Windows Phone 8 应用程序的加载栏

试试这个。

XAML

<phone:PhoneApplicationPage
...............>
    <phone:PhoneApplicationPage.DataContext>
        <local:ViewModel/>
    </phone:PhoneApplicationPage.DataContext>
    <shell:SystemTray.ProgressIndicator>
        <shell:ProgressIndicator IsIndeterminate="{Binding IsBusy}" 
                                 IsVisible="{Binding IsBusy}" 
                                 Text="{Binding Message}" />
    </shell:SystemTray.ProgressIndicator>
    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <!--TitlePanel contains the name of the application and page title-->
        <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
            <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
            <TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
        </StackPanel>
        <!--ContentPanel - place additional content here-->
        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Button Content="Show Progress" Command="{Binding _ShowProgressBar}" Height="100" />
        </Grid>
    </Grid>
</phone:PhoneApplicationPage>

C#

public class ViewModel : INotifyPropertyChanged
{
    private bool _IsBusy;
    public bool IsBusy
        {
            get { return _IsBusy; }
            set { _IsBusy = value; RaisePropertyChanged("IsBusy"); }
        }
    private string _Message;
    public string Message
        {
            get { return _Message; }
            set { _Message = value; RaisePropertyChanged("Message"); }
        }
    public RelayCommand _ShowProgressBar { get; set; }
    public ViewModel()
        {
            _ShowProgressBar = new RelayCommand(() => ShowProgressBar());
        }
    private void ShowProgressBar()
        {
            IsBusy = true;
            Message = "Loading...";
        }
    public event PropertyChangedEventHandler PropertyChanged;
    private void RaisePropertyChanged(string property)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(property));
            }
        }
}

到这里,这个例子就是你需要的。http://msdn.microsoft.com/en-us/library/windowsphone/develop/gg442303(v=vs.105).aspx

您正在寻找的是一个不确定的进度条。

可以从系统托盘 [3] 调用内置进度条,也可以从工具箱中在 XAML 中定义自定义进度条。

对于虚线效果,您需要做的就是将进度条的不确定属性设置为 True,否则它将显示一个进度条,显示进程完成百分比。

以下是一些有用的文章供您参考:

  1. 创建自定义不确定进度条 - MSDN
  2. 进度条的设计原则 - MSDN
  3. 进度条教程 - C# 角