0

作为参数传递的对象只收到一个导航事件。我想在点击事件中接收它们,我应该使用什么来代替参数?

void App1::MainPage::btuN_Click(Platform::Object^ sender,     Windows::UI::Xaml::RoutedEventArgs^ e)
{
Variables^ data = (Variables^)e->OriginalSource;
if (data->sNotf!=nullptr)
    Frame->Navigate(TypeName(BlankPage3::typeid), data);
}

我使用了 OriginalSource,但它没有用。有人会帮助我吗?感谢进阶

4

2 回答 2

1

OriginalSource属性包含对引发事件的对象的引用。它与导航参数无关。

我不确定您想在按钮单击事件中访问哪些参数。在导航事件中传递给您页面的那些?在这种情况下,您应该处理所述导航事件,在那里检索参数并将它们存储到页面的私有字段中。在点击事件中,您可以从私有字段中读取它们并将它们转发。

在相关说明中:不鼓励将非基本类型作为导航参数传递。如果您需要这样做,最好只传递对象 ID 并从公共存储库中读取页面内的值。

于 2013-03-17T06:09:16.030 回答
1

当您导航到您的页面时,如果您的导航事件中的参数很重要,您应该将它们存储在您的页面对象中,以便以后可以访问它。

//MainPage needs to have a private Variables^ named Info
void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
{
  if(e->Parameter)
    this->Info = dynamic_cast<Variables^>(e->Parameter);
}

然后从您的点击处理程序中访问该变量:

void MainPage::btuN_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
  if(this->Info)
    if (this->Info->sNotf!=nullptr)
      Frame->Navigate(TypeName(BlankPage3::typeid), Info);
}
于 2013-03-19T20:02:11.520 回答