类库中的UI页面

时间:2013-03-12 03:50:52

标签: windows-8 windows-runtime winrt-xaml

我正在开发Windows 8(C#)中的类库,我需要在其中显示用户输入的UI。如何在类库中创建UI并调用它。请帮忙。

现在我从类库中调用Popup来显示所需的UI,但是我发现弹出窗口是从库中打开的,但是它隐藏在另一个UI元素下面(在我的例子中是Webview)。请参考下面的代码片段。 / p>

类库代码

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();
}

2 个答案:

答案 0 :(得分:0)

什么样的输入?是/否或字符串输入?

对于是/否,您可以使用标准MessageDialog。如果您需要接收自定义输入,例如文本,则可以使用CustomDialog工具包中提供的Callisto控件。

答案 1 :(得分:0)

您无法在WebView上显示其他控件。但是,您可以通过暂时隐藏WebView并显示WebViewBrush来解决此问题。

来自WebView Documentation

  

WebView的特征是其他UI区域(如控件)无法在WebView上呈现。这是因为内部处理窗口区域的方式,特别是如何处理输入事件以及屏幕绘制方式。如果要呈现HTML内容并将其他UI元素放在该HTML内容之上,则应使用WebViewBrush作为渲染区域。 WebView仍然提供HTML源信息,并通过SourceName属性引用该WebView。 WebViewBrush没有此覆盖限制。

     

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