在Windows 8 App中将类对象作为参数传递,并在单击事件上接收它们

时间:2013-03-16 18:54:59

标签: windows-8 c++-cx

作为参数传递的对象仅接收导航事件。我想在Click事件上接收它们,我应该使用什么而不是参数??

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,但它没有用。有人会帮助我吗?感谢Adv

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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);
}