首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight ListBox -选择状态发生时更改

问Silverlight ListBox -选择状态发生时更改
EN

Stack Overflow用户
提问于 2011-08-19 23:22:12
回答 1查看 458关注 0票数 1

我有一个用作导航菜单的ListBox。选择项目时,该项目的状态将突出显示。我现在已经实现了一个消息框,当导航离开页面时,如果有未保存的更改。问题是,ListBoxItem的可视状态在单击时更改为选中状态。我需要能够将状态设置为从代码中选择,而不是单击。

有没有一种方法可以重写单击事件,使其不会导致ListBoxItem进入选中状态?然后我就可以做VisualStateManager.GoToState(item, "Selected", true)了。

如果没有,有没有办法为ListBoxItem创建自定义的可视状态?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-22 19:21:29

您应该中断项目容器中MouseLeftButtonDown事件的路由,并从视图模型中设置所选项目。例如:

XAML

代码语言:javascript
复制
<ListBox x:Name="lb">
   <ListBoxItem>
      <TextBlock MouseLeftButtonDown="TextBlock_OnMouseLeftButtonDown" Text="Test"/>
   </ListBoxItem>
 </ListBox>

事件处理程序

代码语言:javascript
复制
 private void TextBlock_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
      //interrups item selection
      e.Handled = true;
      //here you can show "Do you want navigate from?" dialog
      // and if user accepts then show selected item in menu using SelectedItem or SelectedIndex
      lb.SelectedIndex = 0;
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7123798

复制
相关文章

相似问题

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