WPF でナビゲーション コマンド フレームワークを使用して、WPF アプリケーション内のページ間を移動しようとしています (デスクトップ。XBAP または Silverlight ではありません)。
すべてが正しく構成されていると思いますが、機能していません。エラーなしでビルドして実行しました。出力ウィンドウにバインディング エラーは表示されませんが、ナビゲーション ボタンが無効になっています。
サンプル アプリの app.xaml は次のとおりです。
<Application x:Class="Navigation.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="First.xaml">
</Application>
StartupUri が First.xaml を指していることに注意してください。First.xaml はページです。WPF は、NavigationWindow でページを自動的にホストします。First.xaml は次のとおりです。
<Page x:Class="Navigation.First"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="First">
<Grid>
<Button
CommandParameter="/Second.xaml"
CommandTarget="{Binding RelativeSource=
{RelativeSource
FindAncestor,
AncestorType={x:Type NavigationWindow}}}"
Command="NavigationCommands.GoToPage"
Content="Go!"/>
</Grid>
</Page>
ボタンの CommandTarget は NavigationWindow に設定されます。コマンドは GoToPage で、ページは /Second.xaml です。CommandTarget を含むページに、CommandParameter を「Second.xaml」に設定しようとしました (First.xaml と Second.xaml はどちらもソリューションのルートにあります)。CommandTarget を空のままにしてみました。また、Path を Binding に、NavigationWindow のさまざまなナビゲーション関連のパブリック プロパティに設定しようとしました。これまでのところ何も機能していません。
ここで何が欠けていますか?コードでナビゲーションを行いたくありません。
説明。
ボタンを使用する代わりに、ハイパーリンクを使用する場合:
<Grid>
<TextBlock>
<Hyperlink
NavigateUri="Second.xaml">Go!
</Hyperlink>
</TextBlock>
</Grid>
すべてが期待どおりに機能します。ただし、私の UI 要件は、ハイパーリンクを使用することが適切であることを意味します。人々が押すための大きな太ったボタンが必要です。そのため、ボタンを使用してナビゲートしたいと考えています。この場合、ハイパーリンクと同じ機能をボタンに提供する方法を知りたいだけです。