ica*_*tan 5 c# wpf events user-controls focus
FocusLost事件正在正确处理WPF的组件对于用户控件它是不同的:
如果单击或聚焦用户控件中的任何控件,则会立即触发User-Control的FocusLost!我怎么能阻止它呢?
我无法解决这个问题:(
Fre*_*lad 11
您可以检查IsKeyboardFocusWithin的UserControl,以确定是否UserControl或任何其子女有键盘焦点与否.还有一个事件IsKeyboardFocusWithinChanged,您可以使用,只是检查,如果e.OldValue是true和e.NewValue是false在事件处理程序.
编辑.
下面是一个示例,说明如何在转为false 时将UserControl加注设置为路由事件(UserControlLostFocus)IsKeyboardFocusWithin.
可用的像
<my:UserControl1 UserControlLostFocus="userControl11_UserControlLostFocus"
../>
Run Code Online (Sandbox Code Playgroud)
样品 UserControl
public partial class UserControl1 : UserControl
{
public static readonly RoutedEvent UserControlLostFocusEvent =
EventManager.RegisterRoutedEvent("UserControlLostFocus",
RoutingStrategy.Bubble,
typeof(RoutedEventHandler),
typeof(UserControl1));
public event RoutedEventHandler UserControlLostFocus
{
add { AddHandler(UserControlLostFocusEvent, value); }
remove { RemoveHandler(UserControlLostFocusEvent, value); }
}
public UserControl1()
{
InitializeComponent();
this.IsKeyboardFocusWithinChanged += UserControl1_IsKeyboardFocusWithinChanged;
}
void UserControl1_IsKeyboardFocusWithinChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if ((bool)e.OldValue == true && (bool)e.NewValue == false)
{
RaiseEvent(new RoutedEventArgs(UserControl1.UserControlLostFocusEvent, this));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6235 次 |
| 最近记录: |