if (strXapOrXaml == "xaml")
{
string[] s = { "ClientBin" };
//这里控制是相对地址还是绝对地址
string url = "";
if (menuUrl.StartsWith("http://"))
{
url = menuUrl.ToString().Trim();
}
else
{
url = App.Current.Host.Source.OriginalString.ToString().Split(s, StringSplitOptions.RemoveEmptyEntries)[0] + menuUrl.ToString().Trim(new char[] { '.', '/' });
}
cpt.frmMain.Navigate(new Uri("/AspxContainer.xaml?tourl=" + url, UriKind.Relative));
tchA.imgRefresh.Tag = url; //获取页面URL地址并赋值 2013-01-30
}
这里比如url中带多个参数:
./YSQ/page2.aspx?stype=2&sdefault=0
<navigation:Page x:Class="WebMain.AspxContainer"
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"
mc:Ignorable="d"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:divtools="clr-namespace:Divelements.SilverlightTools;assembly=Divelements.SilverlightTools"
d:DesignWidth="640" d:DesignHeight="480"
Title="AspxContainer Page">
<Grid x:Name="LayoutRoot">
<divtools:HtmlHost x:Name="htmlPlaceholderHost1" SourceUri="http://www.baidu.com" Margin="0,0,0,0"/>
</Grid>
</navigation:Page>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;
namespace WebMain
{
public partial class AspxContainer : Page
{
public AspxContainer()
{
InitializeComponent();
}
// 当用户导航到此页面时执行。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (this.NavigationContext.QueryString.ContainsKey("tourl"))
{
//加载页面
string url = e.Uri.ToString().Substring(26); //去掉前面的字符串/AspxContainer.xaml?tourl=
this.htmlPlaceholderHost1.SourceUri = new Uri(url, UriKind.RelativeOrAbsolute);
}
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
}
}
}
在重构函数OnNavigatedTo函数中使用参数e的Uri属性,是解决这个问题的关键!