首先,SelectedIndex不是在标记中公开的,所以你必须在后台的代码中实现它,对吧?
其次,我在后面的代码中设置了绑定:
Binding binding = new Binding("Main.PanoSelectedIndex.ObservedObject");
binding.Mode = BindingMode.TwoWay;
rootPano.SetBinding(Panorama.SelectedIndexProperty, binding);`(ObservedObject实现了iNotifyChanged)
绑定路径指向我的主视图模型,我可以看到PanoramaItem正在更新绑定。但是,当其他内容( MVVM Light命令)更改绑定时,全景图不会响应。有什么想法吗?
谢谢,罗杰
发布于 2011-02-01 16:23:40
引用Windows Phone Developer FAQ的话
全景图的设计目的是让用户处于控制之中,因此您不能通过编程设置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"]];
}发布于 2011-02-01 13:02:13
据我所知,SelectedIndex是全景图中的只读属性(这是WP7 SDK将其设为只读的原因)。因此,您只能将UI更改返回到您的VM,并且不能通过VM属性更改来更新UI。
DefaultItem是用来编程设置索引的属性。
同样,以编程方式设置已经实例化的全景图的问题是,标题和全景图项目的对齐方式不会同步。无论如何,我并不灰心,但仍然有一些机会,黑客那里。
https://stackoverflow.com/questions/4858480
复制相似问题