0

私はWindows8(C#)でクラスライブラリを開発しています。このライブラリでは、ユーザー入力を取得するためにUIを表示する必要があります。クラスライブラリ内にUIを作成して呼び出す方法。助けてください。

クラスライブラリからポップアップを呼び出して必要な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();
}
4

2 に答える 2

0

どんなインプット?はい/いいえまたは文字列入力?

はい/いいえの場合、標準のMessageDialogを使用できます。テキストなどのカスタム入力を受け取る必要がある場合は、 Callistoツールキットで利用可能なCustomDialogコントロールを使用できます。

于 2013-03-12T03:54:03.090 に答える
0

WebView の上に他のコントロールを表示することはできません。ただし、WebView を一時的に非表示にして WebViewBrush を表示することで、これを回避できます。

WebView ドキ​​ュメントから:

WebView には、コントロールなどの他の UI 領域を WebView の上にレンダリングできないという特性があります。これは、ウィンドウ領域が内部で処理される方法、特に入力イベントの処理方法と画面の描画方法が原因です。HTML コンテンツをレンダリングし、その HTML コンテンツの上に他の UI 要素を配置する場合は、レンダリング領域として WebViewBrush を使用する必要があります。WebView は引き続き HTML ソース情報を提供し、SourceName プロパティを通じてその WebView を参照します。WebViewBrush には、このオーバーレイの制限はありません。

重複するコンテンツ (ドロップダウン リストやアプリ バーなど) がたまにしかないインタラクティブな WebView を表示する場合は、必要に応じて一時的に WebView コントロールを非表示にして、WebViewBrush 塗りつぶしを使用する要素に置き換えることができます。その後、重複するコンテンツがなくなったら、元の WebView を再度表示できます。詳細については、WebView コントロールのサンプルを参照してください。

于 2013-03-12T13:27:33.377 に答える