Silverlight列表框-发生选定状态时更改

Silverlight列表框-发生选定状态时更改,silverlight,Silverlight,我有一个列表框,用作导航菜单。选中某个项目时,其状态将高亮显示。我现在实现了一个消息框,当导航离开页面时,如果有未保存的更改。问题是,ListBoxItem的可视状态在单击时更改为selected。我需要能够将设置状态更改为“从代码中选择”,而不是单击 是否有方法覆盖click事件,使其不会导致ListBoxItem进入选定状态?然后,我可以执行VisualStateManager.GoToState(项目“Selected”,true) 如果没有,是否有方法为ListBoxItem创建自定义视

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

是否有方法覆盖click事件,使其不会导致ListBoxItem进入选定状态?然后,我可以执行
VisualStateManager.GoToState(项目“Selected”,true)


如果没有,是否有方法为ListBoxItem创建自定义视觉状态?

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

XAML


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

XAML

<ListBox x:Name="lb">
   <ListBoxItem>
      <TextBlock MouseLeftButtonDown="TextBlock_OnMouseLeftButtonDown" Text="Test"/>
   </ListBoxItem>
 </ListBox>
 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;
 }