2013-01-18 48 views
1

我需要一個用於我的應用程序的模式對話框,但它似乎沒有像XAML Metro應用程序中那樣。有人建議彈出窗口。在XAML Metro應用程序中彈出Popup的目的是什麼?

我試過了,它似乎底層的用戶界面仍然響應..所以一個彈出窗口不是模態。

我認爲確定可能是它的目的是在屏幕的中心彈出一個彈出窗口,而不管其他的佈局和它出現 - 不是。彈出窗口與其他所有的佈局一樣。如果它在一個網格中,它將被放置在0行和0列中不在中心。請幫助理解。我無法找到與使用網格可以實現的不同的用途。

Popup的目的是什麼?與其他內容控件有何不同?

+0

當您使用彈出窗口,彈出寬度和高度屏幕大小,並在主彈出式窗口內爲您的內容創建一個div。當您爲主彈出窗口調用彈出窗口更改不透明度並覆蓋內容窗格的不透明度時。這將使底層禁用。我假設你沒有masterpage。其xaml項目爲 – Sakthivel

+0

。有沒有divs但我做了類似的事情是的 –

回答

2

差異:

  1. 你不必把它當作另一種控制的孩子。雖然在這種情況下,您可能會遇到遍歷視覺樹的問題,並且關注TextBox不會移動其內容,因此虛擬鍵盤可能會覆蓋其內容,或者其裝飾內容可能會失去與Popup上的裝飾控件的對齊。

  2. 其內容樹呈現在任何其他內容的頂部,並且(我相信)不會被父控件的剪輯區域剪裁。

  3. 當您首次顯示或當父級佈局(或大小)發生更改時,通常需要手動設置其寬度和高度,尤其是在將其寬度和高度設置爲寬度和高度父母(或窗口)。

這就是說 - 模態對話框是不好的UI,應該避免。如果您想要顯示對話框或使用其他方法,則只需導航到另一個頁面即可。幾乎沒有什麼比在UI上顯示模式對話更惱人的了,它看起來沒有啓用,但不響應輸入。

+0

你是說Popup不需要放在視覺樹中以顯示它嗎?真? –

+0

是的。你可以做'新的Popup {Child = new TextBlock {Text =「Hello」},IsOpen = true};',但是除了簡單的測試代碼之外,我會勸阻它。 –

1

我需要一個模式對話框爲我的應用程序,但它似乎沒有像在XAML Metro應用程序中。有人建議彈出窗口。

由於Windows 8.1,實際上是類似的,你可能想尋找到一個模式對話框的東西: 這就是所謂的Flyouts

+0

模式對話框不在XAML中,它是Windows.UI.Popups.MessageDialog。 http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.popups.messagedialog.aspx –

+0

是的,但Flyout在XAML中,對嗎? @BoppityBop表示他需要XAML中的模態對話框,我認爲Flyout會是一個不錯的選擇。 – Vincent

+1

我對這個問題的理解是,他正在尋找一種模式對話框行爲,即MessageDialog。我指出該UI不直接在XAML中,而是在Windows.UI.Popups中。但是,如果您手動實施模態行爲,當然可以使用XAML彈出窗口。 –

1

顯然在Windows 8.1中缺少一個具有自定義內容的模式彈出窗口。一個可能的解決方法:

  1. 使用Popup控制(本身不是模態)
  2. 使背景半透明
  3. 拉伸它在整個屏幕
  4. 地方,容器內的實際彈出內容和在它周圍留下一些空間

現在,父頁面可見但灰顯,並且無法訪問,因爲Popup正在覆蓋它。

相關問題