我按照这篇文章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,那么我可以解决这个问题。