首先,SelectedIndex没有在标记中公开,所以你必须在后面的代码中进行,对吧?
其次,我在代码中设置了绑定:
Binding binding = new Binding("Main.PanoSelectedIndex.ObservedObject");
binding.Mode = BindingMode.TwoWay;
rootPano.SetBinding(Panorama.SelectedIndexProperty, binding);`
(ObservedObject实现iNotifyChanged)
绑定路径指向我的主视图模型,我可以看到PanoramaItem正在更新绑定。但是,当其他内容(MVVM Light命令)更改绑定时,全景图不会响应。有什么想法吗?
谢谢, 罗杰
答案 0 :(得分:1)
全景图的设计使用户处于控制之中,因此您无法以编程方式设置SelectedIndex,或强制导航到全景图项目。
您可以设置DefaultItem,以便在首次启动全景图时,全景图导航到该项目,但您无法以编程方式导航。也可以使用DefaultItem,以便后退导航感觉就像用户所在的项目没有改变。
更新:您可以使用DefaultItem
保存/恢复Panorama
的选择,如下所示(来自Jeff Prosise的recent blog post的代码):
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"]];
}
答案 1 :(得分:0)
据我所知,SelectedIndex是Panorama中的readonly属性(Weired为什么WP7 SDK只读它)。因此,您只能将UI更改回VM,并且无法通过VM属性更改来更新UI。
DefaultItem是用于以编程方式设置索引的属性。
再次以编程方式设置已经实例化的Panorama的问题是,Title和Panoramaitem的对齐不会同步。无论如何,我并不沮丧,但仍有一些机会在那里进行黑客攻击。