Для простого меню я использовал несколько раз что-то вроде следующего.
<ListBox SelectionChanged="LinkSelected">
<ListBoxItem Name="EnterCode" >
<TextBlock Text="Enter Code" />
</ListBoxItem>
<ListBoxItem Name="Login" >
<TextBlock Text="Login" />
</ListBoxItem>
<ListBoxItem Name="Register" >
<TextBlock Text="Register" />
</ListBoxItem>
</ListBox>
А потом что-то вроде этого в обработчике событий:
private void WelcomeLinkSelected(object sender, SelectionChangedEventArgs e)
{
if (sender is ListBox)
{
if ((sender as ListBox).SelectedIndex < 0)
{
return;
}
if ((sender as ListBox).SelectedIndex == 0)
{
NavigationService.Navigate(new Uri("/EnterCode.xaml", UriKind.Relative));
}
if ((sender as ListBox).SelectedIndex == 1)
{
NavigationService.Navigate(new Uri("/Login.xaml", UriKind.Relative));
}
if ((sender as ListBox).SelectedIndex == 2)
{
NavigationService.Navigate(new Uri("/Register.xaml", UriKind.Relative));
}
// This is very important!
(sender as ListBox).SelectedIndex = -1;
}
}
Если вы сделаете это, последняя строка в обработчике событий, которая сбрасывает SelectedIndex, очень важна, так как позволяет одному и тому же пункту меню выбираться несколько раз подряд без предварительного выбора другого параметра.