Связывание Panorama.SelectedIndexProperty в WP7 - PullRequest
0 голосов
/ 01 февраля 2011

Во-первых, SelectedIndex не отображается в разметке, поэтому вы должны сделать это в коде, верно?

Во-вторых, я установил привязку в коде:

Binding binding = new Binding("Main.PanoSelectedIndex.ObservedObject");
binding.Mode = BindingMode.TwoWay;
rootPano.SetBinding(Panorama.SelectedIndexProperty, binding);`

(ObservedObject реализует iNotifyChanged)

Путь привязки указывает на мою модель основного представления, и я вижу, что PanoramaItem обновляет привязку.Однако панорама не отвечает, когда что-то другое (команда MVVM Light) меняет привязку.Есть идеи?

Спасибо, Роджер

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Цитата из Часто задаваемых вопросов для разработчиков Windows Phone

Панорама разработана таким образом, что пользователь контролирует ее, поэтому вы не можете установить SelectedIndex программно или принудительно перейти кэлемент панорамы.

Вы можете установить элемент DefaultItem таким образом, чтобы при первом запуске панорамы панорама переходила к этому элементу, но вы не можете программно перемещаться дальше этого.DefaultItem также можно использовать, чтобы задняя навигация напоминала, что элемент, в котором находился пользователь, не изменился.

ОБНОВЛЕНИЕ: Вы можете использовать DefaultItem, чтобы сохранить / восстановить выбор для Panorama, как показано ниже (код из недавнего сообщения в блоге Джеффа Просиза ):

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
 // Save the Panorama control's SelectedIndex in page state
 State["Index"] = PanoramaControl.SelectedIndex;
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
 // Restore the Panorama control's SelectedIndex
 if (State.ContainsKey("Index"))
 PanoramaControl.DefaultItem = PanoramaControl.Items[(int)State["Index"]];
}
0 голосов
/ 01 февраля 2011

Насколько я знаю, SelectedIndex - это свойство только для чтения в Panorama (Weired, почему WP7 SDK сделал его доступным только для чтения). Таким образом, вы получите только изменение пользовательского интерфейса к своей виртуальной машине, и вы не сможете обновить пользовательский интерфейс через изменение свойств виртуальной машины.

И DefaultItem - это свойство, которое используется для программной установки индекса.

Опять же, проблема программной установки уже созданной Панорамы заключается в том, что выравнивание Заголовка и Панорамы не будет синхронизировано. Во всяком случае, я не обескураживаю, но там все еще есть шанс взломать.

...