Я пытаюсь использовать структуру команд навигации в WPF для перемещения между страницами в приложении WPF (рабочий стол, а не XBAP или Silverlight).Использование кнопки для перехода на другую страницу в NavigationWindow
Я считаю, что все настроено правильно, но оно не работает. Я создаю и запускаю без ошибок, я не получаю никаких ошибок привязки в окне вывода, но моя кнопка навигации отключена.
Вот 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 пустым. Я также попытался установить путь к привязке к различным связанным с навигацией публичным свойствам в NavigationWindow. До сих пор ничего не работало.
Что мне здесь не хватает? I действительно не хочу делать мою навигацию в коде.
Уточнение.
Если, вместо того чтобы использовать кнопку, я использую гиперссылке:
<Grid>
<TextBlock>
<Hyperlink
NavigateUri="Second.xaml">Go!
</Hyperlink>
</TextBlock>
</Grid>
все работает, как ожидалось. Однако мои требования к пользовательскому интерфейсу означают, что использование гиперссылки прямо. Мне нужна большая жирная кнопка для людей. Вот почему я хочу использовать кнопку для навигации. Я просто хочу знать, как я могу заставить Button предоставить ту же способность, что и Hyperlink в этом случае.
Спасибо, но это не совсем применимо в этом случае. Я отредактировал свой вопрос, чтобы надеяться на его разъяснение. Я пытаюсь найти способ для кнопки Command the NavigationWindow, куда идти дальше. Мой код не работает, поэтому я не настаиваю на том, чтобы это было сделано так. Я ищу способ получить кнопку для работы с NavigationWindow. – Will
По сути, это единственный способ сделать это. Я использую Commands в моей виртуальной машине, чтобы подключить кнопки. Модель базового представления содержит ссылку на навигационную службу главного окна. – Will