Я пытаюсь использовать среду команд навигации в 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. Вот первый.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 пустым. Я также попытался установить Путь к Привязке к различным общедоступным свойствам, связанным с навигацией, в NavigationWindow. Пока ничего не получалось.
Что мне здесь не хватает? Я действительно не хочу выполнять навигацию в коде.
Разъяснение.
Если вместо кнопки я использую гиперссылку:
<Grid>
<TextBlock>
<Hyperlink
NavigateUri="Second.xaml">Go!
</Hyperlink>
</TextBlock>
</Grid>
все работает как положено. Тем не менее, мои требования к пользовательскому интерфейсу означают, что использование гиперссылки прямо. Мне нужна большая жирная кнопка, чтобы люди нажимали. Вот почему я хочу использовать кнопку для навигации. Я просто хочу знать, как заставить Баттон предоставлять ту же способность, что и Гиперссылка, в этом случае.