好的,所以我有一个问题,我一直在尝试在 Silverlight 中创建自定义控件。它只是一个按钮,按下时会打开一个下拉菜单,但下拉菜单是一个子控件。我有一个属性(isDropDownOpen)来控制下拉菜单是否打开。我希望当控件失去焦点时,该属性变为 false,因此在我的类中实现了以下覆盖。
protected override void OnLostFocus(System.Windows.RoutedEventArgs e)
{
base.OnLostFocus(e);
Object focusedElement = FocusManager.GetFocusedElement();
FrameworkElement element = focusedElement as FrameworkElement;
if (element != null)
{
IsDropDownOpen = false;
}
}
问题是当子控件获得焦点时控件会失去焦点,因此只要我单击按钮以外的任何内容,菜单就会关闭。我真的看不出如何解决这个问题,有什么想法吗?
编辑:基本上我想做的是在实际更改属性之前检查该项目是否是一个孩子。在 wpf 中,我会使用 'IsChild()' 或 '.containsFocus()' 做一些事情,但是这些似乎在 silverlight 中不可用......
使用银光 5.0。