首页 > 解决方案 > Xamarin WPF - 按钮按下事件不起作用?

问题描述

我按照这篇文章WPF 平台设置为 Xamarin 设置 WPF。我成功为 WPF 运行 Xamarin,一切正常,除了ImageButton的 Pressed 事件不会触发。

这是我安装的 Nuget Package 版本:

Base Xamarin Project
NETStandard.Library version="2.0.3"
Xamarin.Essentials version="1.6.1"
Xamarin.Forms version="5.0.0.2012"

--------------------------------
Android Project
Xamarin.Essentials version="1.6.1"
Xamarin.Forms version="5.0.0.2012"

--------------------------------
WPF Project
OpenTK version="3.0.1"
OpenTK.GLControl version="3.0.1"
Xamarin.Forms version="5.0.0.2012"
Xamarin.Forms.Platform.WPF" version="5.0.0.2012" 
===============
.Net Framwork 4.7.2

这是我的代码(基本 Xamarin 项目):

主页.xaml

<ImageButton Source="XamarinLogo.png"
                    HorizontalOptions="Center"
                    VerticalOptions="CenterAndExpand"
                    x:Name="imgBtn_Test" />

MainPage.xaml.cs

imgBtn_Test.Pressed += Test_Pressed;
imgBtn_Test.Released += Test_Released;

private void Test_Pressed(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Test_Pressed");//This does NOT work :(
}
private void Test_Released(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Test_Released");//This works :)
}

当我启动 WPF 项目时,只调用了 Test_Released(),根本不调用 Test_Pressed()。

当我使用ImageButton 视觉状态时,我注意到了这个问题,并且此功能仅适用于 Android,而不适用于 WPF,所以我知道 WPF 的 Pressed 事件已损坏,但那次没关系,因为它只是视觉效果,我可以忍受那个,但是这次我需要 Pressed 事件来处理 WPF,因为现在它与功能相关。

如何使 Test_Pressed() 在我的 WPF 项目上工作?

更新:

我可以确定这个问题是 WPF 的错。我已经在 Android 上测试了我的代码,它按预期工作,只有 WPF 不起作用。我想我应该编辑 WPF 项目以使 WPF 的 Pressed 事件正常工作。

根据这个答案

(在 WPF 中)仅在单击按钮时才会触发的焦点事件覆盖了 Pressed 事件。

也许如果我弄清楚如何阻止 WPF 用 Focused 覆盖 Pressed,那么我可以解决这个问题。

标签: c#wpfxamlxamarinxamarin.forms

解决方案


推荐阅读