c# - 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,那么我可以解决这个问题。
解决方案
推荐阅读
- php - 如何使用 WriteHTML 隐藏单元格的网格线
- spring-cloud-dataflow - Spring Cloud数据流,jdbc-sink-rabbit源码
- javascript - 如何在 javascript 中合并 2 个对象而不覆盖和使用两者的值?
- python - 在熊猫中按列减去元素
- flutter - 是否可以在小部件中使用上下文?
- android - 无法在写事务之外修改托管对象
- deployment - 使用办公网络时无法使用 Salesforce DX 部署代码
- c# - 从列表中填充 DataGridView
- javascript - 使用 for...of 循环删除数组项
- sql - SQL:如何通过某些列的值“拆分”表中的行?