首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WP7中绑定Panorama.SelectedIndexProperty

在WP7中绑定Panorama.SelectedIndexProperty
EN

Stack Overflow用户
提问于 2011-02-01 11:09:09
回答 2查看 1.9K关注 0票数 0

首先,SelectedIndex不是在标记中公开的,所以你必须在后台的代码中实现它,对吧?

其次,我在后面的代码中设置了绑定:

代码语言:javascript
复制
Binding binding = new Binding("Main.PanoSelectedIndex.ObservedObject");
binding.Mode = BindingMode.TwoWay;
rootPano.SetBinding(Panorama.SelectedIndexProperty, binding);`

(ObservedObject实现了iNotifyChanged)

绑定路径指向我的主视图模型,我可以看到PanoramaItem正在更新绑定。但是,当其他内容( MVVM Light命令)更改绑定时,全景图不会响应。有什么想法吗?

谢谢,罗杰

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-01 16:23:40

引用Windows Phone Developer FAQ的话

全景图的设计目的是让用户处于控制之中,因此您不能通过编程设置SelectedIndex,也不能强制导航到全景图项目。

您可以设置DefaultItem,以便在第一次启动全景图时,全景图导航到该项目,但您不能以编程方式导航到该项目之外。也可以使用DefaultItem,这样返回导航就像用户所在的项目没有改变一样。

更新:您可以使用DefaultItem保存/恢复Panorama的选择,如下所示(代码来自Jeff Prosise的recent blog post):

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2011-02-01 13:02:13

据我所知,SelectedIndex是全景图中的只读属性(这是WP7 SDK将其设为只读的原因)。因此,您只能将UI更改返回到您的VM,并且不能通过VM属性更改来更新UI。

DefaultItem是用来编程设置索引的属性。

同样,以编程方式设置已经实例化的全景图的问题是,标题和全景图项目的对齐方式不会同步。无论如何,我并不灰心,但仍然有一些机会,黑客那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4858480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档