【问题标题】:Handle event in Xamarin Forms when variable change with hardware keyboard使用硬件键盘更改变量时在 Xamarin Forms 中处理事件
【发布时间】:2018-06-19 17:49:06
【问题描述】:

通过这种方法,我截获了设备物理键盘中的击键(在 MainActivity.cs 文件中)

public override bool OnKeyUp(Keycode keyCode, KeyEvent e)
        {
            if (keyCode.ToString().Equals("DpadLeft"))
            {
                App.Left = true;
                App.Right = false;
            }
            else if (keyCode.ToString().Equals("DpadRight"))
            {
                App.Left = false;
                App.Right = true;
            }
            else
            {
                App.Left = false;
                App.Right = false;
            }
            return base.OnKeyUp(keyCode, e);
        }

在我的应用程序中,我想将某个特定事件的值从 false 更改为 true(现在与按钮的压力相关联) 例如,这是我的 ContentPage 中的事件

PreviousButton.Clicked += (s, e) => 
            {
                OnPreviousClickedAsync(s, e);
            };
NextButton.Clicked += (s, e) => 
            {
                OnNextClickedAsync(s, e);
            };

有没有办法创建一个全局事件,当 Left 或 Right 变量的值改变时触发该事件?

【问题讨论】:

    标签: c# xamarin.forms


    【解决方案1】:

    例如,您可以在应用程序级别创建事件,也可以使用MessagingCenter。使用MessagingCenter,您可以在事件发生时发送消息。在应用程序的另一部分,您可以订阅该消息并执行逻辑。

    订阅并处理消息:

    MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
        // do something whenever the "Hi" message is sent
    });
    

    发送消息:

    MessagingCenter.Send<MainPage> (this, "Hi");
    

    您可以根据需要发送参数。查看文档页面了解更多高级用法。

    【讨论】:

    • ContentPage 没有称为 OnKeyUp 的方法,并且在 ContentPage 中我无法使用 MessagingCenter.Subscribe (this, "Hi", (sender) => { // 每当“Hi”消息已发送 });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多