0

我正在 Windows 8 (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;


        }
    }
}

申请代码:

主页.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 具有不能在 WebView 之上渲染其他 UI 区域(例如控件)的特点。这是因为窗口区域是如何在内部处理的,特别是如何处理输入事件以及如何绘制屏幕。如果你想渲染 HTML 内容并且在 HTML 内容之上放置其他 UI 元素,你应该使用 WebViewBrush 作为渲染区域。WebView 仍然提供 HTML 源信息,您可以通过 SourceName 属性引用该 WebView。WebViewBrush 没有此覆盖限制。

如果要显示一个仅偶尔有重叠内容的交互式 WebView(例如下拉列表或应用栏),可以在必要时暂时隐藏 WebView 控件,将其替换为使用 WebViewBrush 填充的元素。然后,当重叠内容不再存在时,您可以再次显示原始 WebView。有关详细信息,请参阅WebView 控件示例

于 2013-03-12T13:27:33.377 回答