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 が取得されます。選択的なピボット ページ (項目) で。

<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 を使用したナビゲーションには、メッセンジャーを使用できます。

MVVM アーキテクチャを使用している場合は、Messenger を使用して登録した後に、navigationPage を渡すことができます。文字列 (PageName など) 変数を使用してモデル クラス (NavigateToPageMes​​sage など) を作成します。Homepage.xaml から newpage.xaml に文字列を渡したい場合は、Homepage ビューモデルで、バインドしたコマンド (HomeNavigationCommand など) の下にこのようなメッセージを送信するだけです。

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

newpage Viewmodel では、メッセンジャーを次のように登録する必要があります。

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 に答える