0

在 Windows Phone 7 的网络浏览器应用程序中,我在网格上创建了​​一个网络浏览器控件(在 xaml.cs 中)。之后,我在网格上创建了​​一个图像。但是当我在模拟器中打开网络浏览器时,该图像不可见。这是一个选项卡式浏览器。但是图像在网格中可见,但在 Web 浏览器控件上不可见(调试应用程序后)。就像UC浏览器有这个东西。PLease 下面的图像,在网格上,图像是可见的,但在 Web 浏览器控件上,图像是不可见的。

在此处输入图像描述 在此处输入图像描述
在此处输入图像描述

在 .xaml 中

    <Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <TextBox x:Name="UrlTextBox" Background="White" InputScope="URL" KeyDown="UrlTextBox_KeyDown" Margin="0,0,98,0" GotFocus="UrlTextBox_GotFocus" LostFocus="UrlTextBox_LostFocus" KeyUp="UrlTextBox_KeyUp"/>
    <Grid x:Name="BrowserHost" 
      Grid.Row="1" GotFocus="BrowserHost_GotFocus">
        <Image x:Name="Full" Source="Images/full.png" Height="60" Width="60" Margin="430,678,0,0" MouseEnter="Full_MouseEnter" Visibility="Visible" />
    </Grid>

在 Xaml.cs 中

private void ShowTab(int index) 
{ 
    this.currentIndex = index;       
    UrlTextBox.Text = this.urls[this.currentIndex] ?? "Search"; 
    if (this.browsers[this.currentIndex] == null) 
    { 
        WebBrowser browser = new WebBrowser(); 
        this.browsers[this.currentIndex] = browser; 
        BrowserHost.Children.Add(browser); 
        browser.IsScriptEnabled = true; 
    } 
    for (int i = 0; i < NumTabs; i++) 
    { 
        if (this.browsers[i] != null) 
        { 
            this.browsers[i].Visibility = i == this.currentIndex ? Visibility.Visible : Visibility.Collapsed; 
        } 
    } 
} 

我需要在我的网络浏览器控件中使用该图像。有谁能够帮我?

提前感谢您的辛勤工作!

4

2 回答 2

1

在一个全新的应用程序中,我替换了 MainPage.xaml

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <phone:WebBrowser x:Name="theBrowser" />
    <Image Source="/Background.png"
           Stretch="None"
           HorizontalAlignment="Left"
           VerticalAlignment="Bottom" />
</Grid>

然后在我添加的页面构造函数中

theBrowser.Navigate(new Uri("http://stackoverflow.com/"));

这导致显示如下:

看看它的工作原理 - 注意:以浅色主题拍摄的屏幕截图

这证明它是完全可能的。
不幸的是,您的问题(XAML)中的不完整示例和与您的实际问题(.cs)无关的代码使得很难准确地说出您为什么不能让它工作。

此外,请在进一步发布之前阅读http://tinyurl.com/so-hints,并以一种更便于人们帮助您的方式提出未来的问题。

于 2012-05-25T13:27:58.990 回答
0

当您在代码中添加浏览器控件时,您将它放在图像的顶部。您需要 Grid 中的容器来保存您的控件。但最终,您可能应该尝试按照上面 Matt Lacey 显示的方式在 XAML 中进行设置。

如果你想以你的方式尝试这个你需要这样的东西:

<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <TextBox x:Name="UrlTextBox" Background="White" InputScope="URL" KeyDown="UrlTextBox_KeyDown" Margin="0,0,98,0" GotFocus="UrlTextBox_GotFocus" LostFocus="UrlTextBox_LostFocus" KeyUp="UrlTextBox_KeyUp"/>
    <Grid x:Name="BrowserHost" 
  Grid.Row="1" GotFocus="BrowserHost_GotFocus">
        <Grid x:Name="BrowserHolder"/>
        <Image x:Name="Full" Source="Images/Full.png" Height="60" Width="60" Margin="430,678,0,0" MouseEnter="Full_MouseEnter" Visibility="Visible" />
    </Grid>
</Grid>

注意网格“BrowserHolder”的添加。由于该控件是首先添加的,因此您添加到该控件的任何内容都应显示在图像后面。

所以你的代码就变成了:

private void ShowTab(int index) 
{ 
    this.currentIndex = index;       
    UrlTextBox.Text = this.urls[this.currentIndex] ?? "Search"; 
    if (this.browsers[this.currentIndex] == null) 
    { 
        WebBrowser browser = new WebBrowser(); 
        this.browsers[this.currentIndex] = browser; 

        // NOTE: Changed to BrowserHolder
        BrowserHolder.Children.Add(browser); 

        browser.IsScriptEnabled = true; 
    } 
    for (int i = 0; i < NumTabs; i++) 
    { 
        if (this.browsers[i] != null) 
        { 
            this.browsers[i].Visibility = i == this.currentIndex ? Visibility.Visible : Visibility.Collapsed; 
        } 
    } 
} 
于 2012-05-25T14:04:36.320 回答