Frame不在Frame Template中使用带有ProgressBar的Toolkit Transitions

时间:2011-04-08 17:34:21

标签: c# xaml windows-phone-7

我转而在我的应用框架中使用ProgressBar / Grid而不是Popup。我使用这个堆栈溢出帖子来使它工作:Dynamic Progress bar In WP7

然而,在使用示例时,我不再有页面转换。如果页面转换无法正常工作,我将很难保证使用它。有什么我想念的吗?我尝试将TargetType设置为“TransitionFrame”,但这不能正常工作并抛出XAML解析异常(对于命名空间Microsoft.Phone.Controls.PhoneApplicationPages

<ControlTemplate x:Key="LoadingIndicatorTemplate" TargetType="toolkit:TransitionFrame" >
                            <Grid x:Name="ClientArea">
                                <ContentPresenter />
                                <Grid x:Name="ProgressGrid" Background="Black" Opacity="0.85" Visibility="Collapsed" Loaded="ProgressGrid_Loaded">
                                    <StackPanel x:Name="Loading" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10">
                                        <TextBlock HorizontalAlignment="Center" Name="tbLoading" Text="Loading" Style="{StaticResource TextNormalStyle}" />
                                        <ProgressBar Style="{StaticResource PerformanceProgressBar}" HorizontalAlignment="Center" Name="pbLoading" Width="400" Margin="10" IsIndeterminate="False" />
                                    </StackPanel>
                                </Grid>
                            </Grid>
                    </ControlTemplate>

2 个答案:

答案 0 :(得分:2)

要使用Toolkit的TransitionFrame进行页面过渡以及自定义ControlTemplate来显示进度条,您必须将ControlTemplate的 TargetType 指定为toolkit:Transitionframe,其中工具包< / strong>定义为:

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

问题的其余部分是您的ControlTemplate未指定TransitionFrame所需的模板部分。它需要两个ContentPresenter类型的名为 FirstContentPresenter SecondContentPresenter 的部分。将ControlTemplate更改为以下内容以恢复页面转换:

        <ControlTemplate x:Key="LoadingIndicatorTemplate" TargetType="toolkit:TransitionFrame">
            <Grid x:Name="ClientArea">
                <ContentPresenter x:Name="FirstContentPresenter" />
                <ContentPresenter x:Name="SecondContentPresenter" />
                <Grid x:Name="ProgressGrid"
                      Background="Black"
                      Opacity="0.85"
                      Visibility="Collapsed"
                      Loaded="ProgressGrid_Loaded">
                    <StackPanel x:Name="Loading"
                                VerticalAlignment="Center"
                                HorizontalAlignment="Center"
                                Margin="10">
                        <TextBlock x:Name="tbLoading"
                                   HorizontalAlignment="Center"
                                   Text="Loading"
                                   Style="{StaticResource BoaTextNormalStyle}" />
                        <toolkit:PerformanceProgressBar x:Name="pbLoading"
                                                        HorizontalAlignment="Center"
                                                        Width="400"
                                                        Margin="10"
                                                        IsIndeterminate="False" />
                    </StackPanel>
                </Grid>
            </Grid>
        </ControlTemplate>

注意: Jeff Wilcox的PerformanceProgressBar现在是Silverlight工具包的一部分,因此您可以直接使用它,如上所示。

答案 1 :(得分:0)

如果您将进度条放在框架上,然后为页面设置动画,则动画将不包含进度条。

为什么不把进度条放在页面上?