使用Button导航到NavigationWindow中的另一个页面

6 wpf button navigationwindow

我试图使用导航命令框架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>
Run Code Online (Sandbox Code Playgroud)

注意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>
Run Code Online (Sandbox Code Playgroud)

按钮的CommandTarget设置为NavigationWindow.命令是GoToPage,页面是/Second.xaml.我已经尝试将CommandTarget设置为包含的Page,将CommandParameter设置为"Second.xaml"(First.xaml和Second.xaml都在解决方案的根目录中),并且我尝试将CommandTarget留空.我还尝试在NavigationWindow上设置绑定路径到各种与导航相关的公共属性.到目前为止,没有任何工作.

我在这里错过了什么?我真的不想在代码中进行导航.


澄清.

如果我使用超链接而不是使用按钮:

<Grid>
    <TextBlock>
       <Hyperlink 
           NavigateUri="Second.xaml">Go!
       </Hyperlink>
    </TextBlock>
</Grid>
Run Code Online (Sandbox Code Playgroud)

一切都按预期工作.但是,我的UI要求意味着使用超链接是正确的.我需要一个巨大的脂肪按钮供人们按.这就是我想使用按钮导航的原因.我只是想知道如何让Button提供与Hyperlink在这种情况下相同的能力.

And*_*ndy 4

根据文档,仅DocumentViewer具体FlowDocumentViewer执行该命令。您需要找到一个实现的导航命令,或者为此命令NavigationWindow设置一个命令并自行处理。CommandBinding