在MVVM环境中的另一个xaml页面中获取元素

在MVVM环境中的另一个xaml页面中获取元素,mvvm,windows-phone-8,Mvvm,Windows Phone 8,我有一个mainpage.xaml,其中包含以下进度条: <ProgressBar x:Name="DataLoading" Height="10" Margin="0,-14,0,0" Grid.Row="1" VerticalAlignment="Top" IsIndeterminate="True"/> 现在我需要让这个progressbar的可见性在调用Web服务后崩溃?我到哪里去拿?请帮助我是mvvm和windowsphone开发的新手?请告诉我你还需要什么代码才能给

我有一个mainpage.xaml,其中包含以下进度条:

<ProgressBar x:Name="DataLoading" Height="10" Margin="0,-14,0,0" Grid.Row="1" VerticalAlignment="Top" IsIndeterminate="True"/>

现在我需要让这个progressbar的可见性在调用Web服务后崩溃?我到哪里去拿?请帮助我是mvvm和windowsphone开发的新手?请告诉我你还需要什么代码才能给我答案谢谢
1

只需向ViewModel添加一个bool属性
IsDataLoading
。使用将其值绑定到
ProgressBar
的属性。根据您的Web服务状态,将
IsDataLoading
属性设置为true和false

<Grid>
    <Grid.Resources>
        <BooleanToVisibiltyConverter x:Key="bool2VisConverter" />
    </Grid.Resources>
    <ProgressBar Visibility="{Binding IsDataLoading, Converter={StaticResource bool2VisConverter}}" />
</Grid>

在您的ViewModel中:

        private bool _isBusy;
    public bool IsBusy
    {
        get
        {
            return _isBusy;
        }
        set
        {
            if (value == _isBusy)
                return;
            _isBusy = value;
            DispatcherService.BeginInvoke(() =>
            {
                RaisePropertyChanged(() => IsBusy);
            });
        }
    }
视图中的Progressbar:

 <ProgressBar IsIndeterminate="True" Visibility="{Binding IsBusy, Converter={StaticResource VisibilityConverter}}" />


Helo感谢您的快速响应,请给我一个语法的快速示例,因为我有一个名为IsDataLoaded的bool,如何将vis属性绑定到此bool?我从来没有听说过BooleantVisibilityConverteri,我用一个问题更新了答案,请不要说你必须反转你的属性逻辑,或者你必须编写你自己的转换器。太棒了!是的,它有效!,只是做了一些额外的改变,让我的工作!但是这个基本的想法是:谢谢你!