C# WPF图像&x27;未激发s gotfocus/lostfocus事件

C# WPF图像&x27;未激发s gotfocus/lostfocus事件,c#,wpf,events,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"

你们能帮我一下吗,为什么当我点击图片然后点击文本框时,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时,当tab到达触发的图像事件时,但我无法用鼠标单击到达图像时,图像不是一个。只有控件可以获得焦点。使用MouseEnterMouseLeave事件代替GotFocus和LostFocus

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

根据,UIElement.GotFocus事件在该元素获得逻辑焦点时发生

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

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

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

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

我猜图像根本无法聚焦。您可能需要将Image标记包装在一个“focusable”元素中。我发现如下:Image类不是真正的控件类,因为它不是控件的子类。不能对图像元素调用焦点,也不能将图像元素放置在选项卡序列中。我可以使用哪种元素来包装图像?谢谢,但我想以某种方式确定图像是否被选中。例如,如果选择了图像外部的边框,这是一个坏主意,因为有多种方法可以改变焦点。如果按tab键切换到其他控件等,则必须捕获所有这些场景,以便正确实现gotfocus/lostfocus。由于
图像
行为在这里有点奇怪,这是一个丑陋的破解,以实现理想的输出。除了处理
GotFocus
LostFocus
,如果我们处理
MouseDown
;工作正常。我相信,有很多其他的方法可以达到同样的效果,但这也是可行的。