3

如何从视图模型中调用负载条?很酷的一个,上面有漂浮的小圆点。我似乎找不到正确的 Bing 短语来搜索它。

4

3 回答 3

15

Try this.

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));
            }
        }
}
于 2013-10-24T05:44:59.983 回答
0

您正在寻找的是一个中间进度条。

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

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

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

  1. 创建自定义不确定进度条 - MSDN
  2. 进度条的设计原则 - MSDN
  3. 进度条教程 - C# 角
于 2014-04-21T08:32:28.967 回答
0

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

于 2013-10-24T05:49:56.073 回答