我在玩Windows 8並創建Windows應用商店應用。目前我正在嘗試創建一個彈出窗口。我想點擊作爲Windows::UI::Xaml::Controls::Primitives::Popup
的Child
託管的(原始)用戶控件上的按鈕。
當我點擊按鈕時,我想要做一些事情並最終關閉彈出窗口。因爲我讀的可視化樹外here如何處理WinRT彈出窗口中的RoutedEvents
路由事件
... 如果你想處理從彈出或工具提示路由事件,將處理程序上都彈出內的特定UI元素或ToolTip,而不是Popup或ToolTip元素本身。不要依賴任何爲Popup或ToolTip內容執行的合成內的路由。這是因爲路由事件的事件路由僅適用於主視覺樹。 ...
然後我創建了一個醜陋的解決方案,以通過彈出窗口(如父母)對我的自定義控件。
void Rotate::MainPage::Image1_RightTapped_1(Platform::Object^ sender, Windows::UI::Xaml::Input::RightTappedRoutedEventArgs^ e)
{
Popup^ popup = ref new Popup();
ImagePopup^ popupchild = ref new ImagePopup(popup); //pass parent's reference to child
popupchild->Tapped += ref new TappedEventHandler(PopupButtonClick);
popup->SetValue(Canvas::LeftProperty, 100);
popup->SetValue(Canvas::TopProperty, 100);
popup->Child = popupchild;
popup->IsOpen = true;
}
void PopupButtonClick(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e){
ImagePopup^ imgPop = static_cast<ImagePopup^>(sender);
if(imgPop != nullptr){
imgPop->CloseParent();
e->Handled = true;
}
e->Handled = false;
}
是否有其他解決方法?謝謝。
謝謝你的主意。 Canvas :: Left的原因是我想在'Image'控件上使用彈出窗口,它可以自由定位在Canvas上,實際上沒有其他佈局容器用於此目的。 – 2013-04-24 18:16:58