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

时间:2012-11-19 12:01:41

标签: mvvm windows-phone-8

我有一个带有此进度条的mainpage.xaml:

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

现在我需要在调用webservice后让这个进度条的可见性崩溃?我会去哪里得到它?请帮助我是非常新的mvvm和windowsphone dev?请告诉我还有哪些代码可以给我一个答案谢谢 1

2 个答案:

答案 0 :(得分:2)

只需向您的ViewModel添加bool属性IsDataLoading即可。使用Visibilty将其值绑定到ProgressBar的{​​{3}}属性。根据您的Web服务状态将IsDataLoading属性设置为true和false。

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

答案 1 :(得分:0)

在ViewModel中:

        private bool _isBusy;
    public bool IsBusy
    {
        get
        {
            return _isBusy;
        }
        set
        {
            if (value == _isBusy)
                return;
            _isBusy = value;
            DispatcherService.BeginInvoke(() =>
            {
                RaisePropertyChanged(() => IsBusy);
            });
        }
    }

视图中的进度条:

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