0

在 cppwinrt(xaml 尚不可用)中,我有一个按钮的 PointerEntered 事件的处理程序,它工作正常。但是在尝试删除显示为图像的此按钮的默认悬停行为时,似乎我可能需要处理 OnPointerEntered 事件 - 我已经看到涉及使用 xaml 触发器的解决方案,这似乎是一个等效的代码. 但是 OnPointerEntered 有一个不同的参数列表,我找不到调用它的方法来构建它。下面是如何成功声明 PointerEntered 事件句柄:

button.PointerEntered([&](winrt::Windows::Foundation::IInspectable const & sender, Windows::UI::Xaml::RoutedEventArgs const & args) { EnteredButton(); });

这会构建并正确调用 EnteredButton。但

button.OnPointerEntered([&](winrt::Windows::UI::Xaml::Input::PointerRoutedEventArgs const & e)
{
    EnteredButton();
});

不会构建 - 在尝试了多种变体之后,我错误地声明了它,但不确定如何构建。(使用完全限定的名称可能不是必需的,但在任何一种情况下似乎都没有伤害)。cppwinrt中是否可以使用OnPointerEntered,如果可以,如何声明?我尝试使用 IPointerRoutedEventArgs 而不是 PointerRoutedEventArgs 没有效果。或者 - 如果有人知道在使用 cppwinrt 创建的按钮中禁用悬停效果的不同方法,那将起作用。

4

1 回答 1

1

你不能按照你的要求去做。呼应 IInspectable 的评论:

  • PointerEntered 是 Windows::UI::Xaml::UIElement 上的事件。您的代码正确地为它声明了一个处理程序。
  • OnPointerEntered不是事件,所以没有办法处理它。它是一种可覆盖的方法,您可以为其提供自己的实现。
于 2018-01-18T02:37:17.363 回答