2013-03-12 15 views
0

我正在開發Windows 8(C#)中的類庫,其中我需要顯示一個UI以獲取用戶輸入。如何在類庫中創建UI並調用它。請幫忙。類庫中的UI頁面

現在我從類庫中調用Popup來顯示所需的UI,但是我發現彈出窗口是從庫中打開的,但是它隱藏在其他UI元素(Webview在我的情況下)下面。請參考下面的代碼片段。

類庫代碼

namespace PopUpLibrary 
{ 
    public class PopupDialog 
    { 
     public void ShowPopup() 
     { 
      Popup popup = new Popup(); 
      popup.HorizontalAlignment = HorizontalAlignment.Center; 
      popup.VerticalAlignment = VerticalAlignment.Center;   
      popup.Height = 500; 
      popup.Width = 700; 
      Button button = new Button(); 
      button.Content = "adfadfad"; 
      button.Width = 200; 
      button.Height = 100; 
      popup.Child = button; 
      popup.IsOpen = true; 


     } 
    } 
} 

施藥代碼:

MainPage.xaml中

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> 
      <WebView Name="webview" ></WebView> 
    </Grid> 

MainPage.xaml.cs中

public MainPage() 
{ 
    this.InitializeComponent(); 
    webview.Navigate(new Uri("http://www.google.com")); 
    PopupDialog popupdialog = new PopupDialog(); 
    popupdialog.ShowPopup(); 
} 
+0

這聽起來像一個有趣的問題。你能舉一個你已經試過的代碼的例子嗎?它是什麼樣的圖書館? – 2013-03-12 03:52:36

回答

0

您無法在WebView上顯示其他控件。但是,您可以通過暫時隱藏WebView並顯示WebViewBrush來解決此問題。

WebView Documentation

web視圖具有其他UI地區如控制不能在web視圖的頂部呈現的特性。這是因爲內部處理窗口區域的方式,特別是如何處理輸入事件以及屏幕如何繪製。如果要渲染HTML內容並將其他UI元素放置在該HTML內容之上,則應該使用WebViewBrush作爲渲染區域。 WebView仍提供HTML源信息,並通過SourceName屬性引用該WebView。 WebViewBrush沒有這個覆蓋限制。

如果要顯示僅偶爾具有重疊內容(如下拉列表或應用欄)的交互式WebView,可以在必要時臨時隱藏WebView控件,並使用WebViewBrush填充將其替換爲元素。然後,當重疊內容不再存在時,您可以再次顯示原始WebView。欲瞭解更多信息,請參閱WebView control sample

+0

非常感謝您的回答,我使用WebBrush/Rectangle解決此問題。它的工作就像魅力。 – Manic 2013-03-14 10:21:20

0

什麼樣的投入?是/否或字符串輸入?

對於是/否,您可以使用標準MessageDialog。如果您需要接收自定義輸入(如文本),則可以使用Callisto工具包中提供的CustomDialog控件。

+0

我試圖在類庫中使用Popup,但在我調用它時沒有打開。如何實現它。 – Manic 2013-03-12 08:58:06

+0

現在編輯了代碼,彈出窗口正在打開,但它隱藏在應用程序的其他UI元素下面(在我的情況下是Webview) – Manic 2013-03-12 12:32:07

+0

如果是標準程序,則獲取當前頁面,隱藏WebView並顯示控件。 – 2013-03-12 16:13:05