如何使用cppwinrt为OnPointerEntered声明处理程序?

时间:2017-12-21 19:44:18

标签: c++-winrt

在cppwinrt中(xaml尚未提供)我有一个Button的PointerEntered事件的处理程序,它工作正常。但是在尝试删除这个显示为图像的Button的默认悬停行为时,似乎我可能需要处理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创建的Button中禁用悬停效果的不同方法,那就可以了。

1 个答案:

答案 0 :(得分:1)

你不能做你要问的事。回应IInspectable的评论:

  • PointerEntered是Windows :: UI :: Xaml :: UIElement上的一个事件。您的代码正确地声明了它的处理程序。
  • OnPointerEntered是一个事件,因此无法处理它。这是一种可以覆盖的方法,您可以提供自己的实现。