作为参数传递的对象仅接收导航事件。我想在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
答案 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);
}