0

我的解决方案中有这个错误:

例外

 An unhandled exception of type 'System.NullReferenceException' occurred in AppBarUtils.dll

XAML

 <controls:Pivot Background="#FF10662B" Foreground="White" BorderBrush="Black" >
            <i:Interaction.Triggers>
                <abu:SelectedPivotItemChangedTrigger>
                    <abu:SwitchAppBarAction>
                        <abu:AppBar Id="0">
                            <abu:AppBar.MenuItems>
                                <abu:AppBarMenuItem Text="Załóż konto" Command="{Binding                        
                                 NavigateCommand,Mode=TwoWay}"/>
                            </abu:AppBar.MenuItems> 

                            <abu:AppBarButton IconUri="{Binding AddButtonIcon}"
                                                    Text="Navigation" >
                                <ec:NavigateToPageAction TargetPage="/LoginPage.xaml"/>
                            </abu:AppBarButton>

                        </abu:AppBar>

                    </abu:SwitchAppBarAction>
                </abu:SelectedPivotItemChangedTrigger>
            </i:Interaction.Triggers>

             <--rest code with other pivots -->


</phone:PhoneApplicationPage>

也许我可以使用另一种方式使用导航到页面?如何使用 mvvm 导航到不同的页面?

4

1 回答 1

1

您可以像这样使用 id 为枢轴页面的某些枢轴项目创建 ApplicationBar。如果 id = 0,它将自动枢轴 Page(Item) 0 。通过使用它,您可以选择所有 AppBars 必须在整个枢轴页面中和在选择性透视页面(项目)中。

<phone:Pivot>
    <i:Interaction.Triggers>
        <appBarUtils:SelectedPivotItemChangedTrigger>
            <appBarUtils:SelectedPivotItemChangedTrigger.SelectionMappings>
                <appBarUtils:SelectionMapping SourceIndex="0" TargetIndex="0"/>
            </appBarUtils:SelectedPivotItemChangedTrigger.SelectionMappings>

            <appBarUtils:SwitchAppBarAction>
                <appBarUtils:AppBar Id="0"   BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
                    <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/>
                </appBarUtils:AppBar>

                <appBarUtils:AppBar Id="1" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
                    <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/>
                </appBarUtils:AppBar>

                <appBarUtils:AppBar Id="2" BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
                    <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.home.png" Text="home" Command="{Binding HomeNavigationCommand}"/>
                    <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.money.png" Text="collection" Command="{Binding CollectionPageCommand}"/>
                    <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.check.rest.png" Text="ok" Command="{Binding OrderConfirmationButtonCommand}"/>
                </appBarUtils:AppBar>

                <appBarUtils:AppBar Id="3"  BackgroundColor="{StaticResource AppBarBg}" ForegroundColor="{StaticResource Foreground}">
                    <appBarUtils:AppBarButton x:Name="ConfirmationAppBarButton" IconUri="/Assets\Images\appbar.cancel.rest.png" Text="cancel" Command="{Binding OrderCancelButtonCommand}"/>
                    <appBarUtils:AppBarButton IconUri="/Assets\Images\appbar.check.rest.png" Text="ok" Command="{Binding OrderConfirmationButtonCommand}" IsEnabled="{Binding Model.EnableCheck,Mode=TwoWay}" />
                </appBarUtils:AppBar>

            </appBarUtils:SwitchAppBarAction>
        </appBarUtils:SelectedPivotItemChangedTrigger>
    </i:Interaction.Triggers>
</phone:Pivot>

对于使用 mvvm 的导航,您可以使用 messenger。

如果您使用的是 MVVM 架构,那么您可以在使用 Messenger 注册后传递 navigationPage。使用字符串(例如 PageName)变量创建模型类(例如 NavigateToPageMes​​sage)。您想将字符串从 homepage.xaml 传递给 newpage.xaml,然后在 Homepage viewmodel 中只需在您绑定的命令下发送这样的消息(比如 HomeNavigationCommand)

private void HomeNavigationCommandHandler()
        {
            Messenger.Default.Send(new NavigateToPageMessage {PageName = "newpage"});
        }

在新页面视图模型中,您应该像这样注册信使,

Messenger.Default.Register<NavigateToPageMessage>(this, (action) => ReceiveMessage(action));

 private object ReceiveMessage(NavigateToPageMessage action)
        {
            var page = string.Format("/Views/{0}.xaml", action.PageName);           
            NavigationService.Navigate(new System.Uri(page,System.UriKind.Relative));
            return null;
        }

//假设您的视图在视图文件夹中

于 2013-11-29T06:46:38.500 回答