WPF图像的gotfocus / lostfocus事件不会被触发

时间:2014-07-07 13:07:49

标签: c# wpf events

你能不能帮助我,为什么当我点击图像再到文本框时,GotFocus和LostFocusa事件没有被解雇?

我的XAML:

<Window x:Class="imageclick.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <StackPanel>
            <Image Source="Untitled.png" GotFocus="GF" LostFocus="LF" Focusable="True"></Image>
            <TextBox ></TextBox>
        </StackPanel>
    </Grid>
</Window>

我无法理解为什么GotFocus / LostFocus事件从未被解雇

提前致谢

更新:当我设置tabindex时,当标签到达图像事件时触发,但是我无法通过鼠标点击触及

2 个答案:

答案 0 :(得分:1)

图片不是 Control 。只有控件才能获得焦点。使用 MouseEnter MouseLeave 事件代替GotFocus和LostFocus,

 <StackPanel>
            <Image Stretch="Uniform" Source="Untitled.png"   Height="410" MouseEnter="Image_MouseEnter" MouseLeave="Image_MouseLeave"></Image>
            <TextBox Height="65"></TextBox>
 </StackPanel>

答案 1 :(得分:-1)

根据MSDN,当此元素获得逻辑焦点时,会发生UIElement.GotFocus事件。

逻辑焦点与键盘焦点不同,当路径中元素的IsFocused属性值从false更改为true时,会引发逻辑焦点。

因此,为了通过鼠标点击实现它,需要处理相应的鼠标按钮事件或只需处理MouseDown并将焦点设置为发件人。

private void Image_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (sender is Image)
        {
            (sender as Image).Focus();
        }
    }

这会将图片的IsFocused属性设置为true