AlexDrenea дает вам хороший способ привязки SelectedItem к свойству вашей модели представления. Если вы хотите ориентироваться на основе этого в архитектуре MVVM, я бы предложил использовать обмен сообщениями, чтобы сделать это.
Я расскажу об этом в своем блоге, который я сделал некоторое время назад, но краткий итог этого в MVVMLight - создание класса Navigator, который находится на уровне приложения.
public class Navigator
{
private PhoneApplicatoinFrame RootFrame;
public Navigator(PhoneApplicationFrame frame)
{
RootFrame = frame;
RegisterMessages();
}
private void RegisterMessages()
{
Messenger.Default.Register<ShowTrackerMessage>(this, ShowTracker);
}
private void ShowTracker(ShowTrackerMessage msg)
{
RootFrame.Navigate(new Uri("/Views/ItemLocationCompassView.xaml", UriKind.RelativeOrAbsolute));
}
}
Затем, как часть запуска вашего приложения, создайте его и передайте ссылку на ваш RootFrame:
private static Navigator _navigator;
public static Navigator Nav
{
get { return _navigator; }
}
...
_navigator = new Navigator(this.RootFrame);
Затем у вас есть несколько вариантов отправки сообщения навигации.
Вариант 1. В вашей ViewModel подключитесь к событию PropertyChanged (часть INotifyPropertyChanged) и отправьте соответствующее сообщение при изменении свойства SelectedItem.
Вариант 2: привязать к событию SelectionChanged вашего ListBox. Я использую EventToCommand MVVMLight, чтобы отправить это событие RelayCommand в моей ViewModel, а затем реагирую соответствующим образом, чтобы отправить сообщение объекту Navigator.
Я расскажу об этом подробнее: http://www.smartchitecture.com/?p=27