如何在wp8.1中传递额外的参数来保存事件

时间:2014-11-15 00:32:47

标签: c++ events arguments windows-phone-8.1

我有一个在c ++中编程创建的元素列表(不在XAML中)。我为hold事件添加了一个事件处理程序,如下所示:

listItem->Holding += ref new Windows::UI::Xaml::Input::HoldingEventHandler(this, &listItem_hold);

我已经定义了这样的事件处理程序:

void listItem_hold(Platform::Object^ sender, Windows::UI::Xaml::Input::HoldingRoutedEventArgs^ e);

有没有办法将自己的数据添加到HoldingRoutedEventArgs对象,以便我可以从事件处理程序中访问它? 我尝试从HoldingRoutedEventArgs创建一个派生类,但它是密封的,因此我不能将它用作基类。

谢谢!

1 个答案:

答案 0 :(得分:0)

不直接。你不会触发Hold事件,因此不能控制传递的参数。

根据您想要的数据以及您想要存放的位置,间接地有几个选项。以下是两个要考虑的问题:

您可以将额外事件封装在事件处理程序本身中。使用属性创建一个类,以获取所需的任何额外信息以及事件处理程序方法。将Hold事件连接到自定义对象中的方法。该对象既可以做自己需要的任何事情,也可以使用自定义参数列表来提升自己的事件。

如果您希望将额外数据附加到发送listItem,则可以将其存储在项目上键入的字典中,或者创建附加属性并将其附加到项目。请参阅MSDN上的Custom attached properties