【发布时间】:2010-05-10 14:50:24
【问题描述】:
我在 Silverlight 中有一个菜单和子菜单结构,我希望子菜单在父菜单项失去焦点时消失 - 标准菜单行为。我注意到单击子菜单项时子菜单的单击事件会丢失,因为父菜单项失去焦点并且子菜单消失了。
用代码更容易解释:
ParentMenuBtn.Click += delegate
{
SubMenu.Visibility = (SubMenu.Visibility == Visibility.Visible) ? SubMenu.Collapsed : SubMenu.Visible;
};
ParentMenuBtn.LostFocus += delegate
{
SubMenu.Visibility = Visibility.Collapsed;
};
SubMenuBtn.Click += delegate
{
throw new Exception("This will never be thrown.");
};
在我的示例中,当单击 SubMenuBtn 时,触发的第一个事件是 ParentMenuBtn.LostFocus(),它隐藏了 SubMenuBtn 的容器。一旦容器的可见性崩溃,就永远不会触发 Click 事件。
我宁愿避免每次都隐藏子菜单,但我有点惊讶的是 Click 事件从未因此触发......
我无法在 LostFocus() 事件中进行任何检查以查看我的 SubMenuBtn 是否具有焦点,因为在调用 LostFocus() 事件之后它才会获得焦点。也就是说,当 LostFocus() 被触发时,SubMenuBtn.IsFocused = false。
有人对此有任何想法吗?
【问题讨论】:
标签: silverlight events button click