且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-01-21 22:47:28

试试这个。

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#

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));
            }
        }
}