C# 通过行为中的PreviewMouseLeftButtonDown处理ClickEvent<;框架元素>;
我有一个C# 通过行为中的PreviewMouseLeftButtonDown处理ClickEvent<;框架元素>;,c#,wpf,events,mouseevent,behavior,C#,Wpf,Events,Mouseevent,Behavior,我有一个行为,我注册了PreviewKeyDown和PreviewMouseLeftButtonDown。我已将此行为附加到菜单项上。现在,当我单击菜单项时,有时仍会调用单击事件,有时则不会。这就像一个时间问题。您对如何解决此问题并停止调用事件有何建议 protected override void OnAttached() { base.OnAttached(); AssociatedObject.PreviewKeyDown += _OnPreviewKeyDown;
行为
,我注册了PreviewKeyDown
和PreviewMouseLeftButtonDown
。我已将此行为
附加到菜单项
上。现在,当我单击菜单项
时,有时仍会调用单击事件
,有时则不会。这就像一个时间问题。您对如何解决此问题并停止调用事件有何建议
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.PreviewKeyDown += _OnPreviewKeyDown;
AssociatedObject.PreviewMouseLeftButtonDown += _OnPreviewMouseLeftButtonDown;
}
private void _OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs mouseButtonEventArgs)
{
if (!_HasAccess())
mouseButtonEventArgs.Handled = true;
}
private void _OnPreviewKeyDown(object sender, KeyEventArgs keyEventArgs)
{
if (!_HasAccess())
keyEventArgs.Handled = true;
}
我还必须订阅AssociatedObject.PreviewMouseLeftButtonUp
并设置handled=true
。现在我得到了想要的行为 FrameworkElement
没有ClickEvent
。我想将此行为
附加到任何控件
上,并“控制”单击事件。这将是一种“安全行为”。如果用户没有控件的权限(按钮
,菜单项
),则应处理/阻止单击
,并显示一种“LoginPopup”。