0

我对 .NET 很陌生,试图做一个简单的 XAML 网页,里面有一个 200x200 的框架,里面有谷歌。我有一个 XAML 页面,如下所示:

    <UserControl x:Class="Oleo.CI.Content.IU.Form.Test"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
    xmlns:telerikInput="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Input"
    xmlns:telerikNavigation="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation"
    xmlns:telerikGrid="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.GridView"
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
    xmlns:uiControl="clr-namespace:Oleo.CI.Contenidos.IU.Control;assembly=Oleo.CI.Contenidos.IU.Control"
    mc:Ignorable="d" d:DesignHeight="500" d:DesignWidth="1002" Width="1002" Height="812" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0 10 18 -10">
          <navigation:Frame x:Name="Cont" Source="http://www.google.com" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="200" Height="200"/>
          <TextBlock Text="Oferta" Grid.Column="3" Grid.Row="2"  HorizontalAlignment="Right" />
    </StackPanel>
 </UserControl>

我已经尝试过使用 navigation:Frame 和 sdk:Frame 但该框架没有显示在页面上与该代码(其他控件,如 TextBlocks 的 RadGrids 工作完美)。我不确定我做错了什么,任何人都可以对我有所启发吗?

谢谢

4

1 回答 1

0

您无法在 Silverlight 框架内打开网页。Frame 类表示一个控件,该控件支持在Silverlight 页面之间进行导航。通过处理Frame的NavigationFailed事件可以看到导航失败。

<navigation:Frame x:Name="Cont" Source="http://www.google.com" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Width="200" Height="200"
            NavigationFailed="Cont_NavigationFailed"/>

它将抛出异常消息: 无法加载 URI 的内容。URI 可能无效。

更新:您可以使用 Html 中的 iframe 标签来实现您的目标。

这就是你要做的事情:在创建 Silverlight 应用程序时,Visual Studio 在你的解决方案中创建两个项目。一个用于 Silverlight 应用程序,它生成 .xap 文件和一个简单的 Asp.Net 网站,默认情况下包含 TestPage.aspx。您的 .xap 文件包含在此网页中,并且 .xap 的高度和宽度设置为 100%。当然,您可以根据需要更改它。目前,我已将高度和宽度都设置为 50%。如果您要在浏览器中的此部分上单击鼠标右键,您将看到 Silverlight 上下文菜单。但是在您的 Web 应用程序的其他部分,您将看到 Html 网页的默认上下文菜单。因此,您必须将 iframe 标记添加到该页面。

    <iframe src="http://www.msdn.com" height="700px" width="700px"></iframe>
    <div id="silverlightControlHost">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
            width="50%" height="50%">
            <param name="source" value="ClientBin/SilverlightApplication1.xap" />
            <param name="onError" value="onSilverlightError" />
            <param name="background" value="white" />
            <param name="minRuntimeVersion" value="5.0.61118.0" />
            <param name="autoUpgrade" value="true" />
            <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration: none">
                <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight"
                    style="border-style: none" />
            </a>
        </object>
        <iframe id="_sl_historyFrame" style="visibility: hidden; height: 0px; width: 0px;
            border: 0px"></iframe>
    </div>

但是,我必须说你不能在 iframe 中打开谷歌网站。因为谷歌正在阻止 iframe。

于 2013-04-24T15:01:39.950 回答