首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

silverlight打开新窗口,该如何处理

2012-04-22 
silverlight打开新窗口Uri urinew Uri(Home.xaml,UriKind.Absolute)HtmlPage.PopupWindow(uri, _blan

silverlight打开新窗口
Uri uri=new Uri("Home.xaml",UriKind.Absolute);
HtmlPage.PopupWindow(uri, "_blank", null);

总是说无效的uri

如果是不同类库中的别的页面访问又如何呢
例如 我在a库,打开b库的页面怎么打呢?

[解决办法]
资源文件 — 本地程序集
 Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);
 
子文件夹中的资源文件 — 本地程序集
 Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);
 
资源文件 — 所引用的程序集
 Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);
 
所引用的程序集的子文件夹中的资源文件
 Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);
 
所引用的版本化程序集中的资源文件
 Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);
 
内容文件
 Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);
 
子文件夹中的内容文件
 Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);
 
源站点文件
 Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);
 
子文件夹中的源站点文件
 Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);
 

文件
 相对 pack URI
 
资源文件 — 本地程序集
 Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);
 
子文件夹中的资源文件 — 本地程序集
 Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);
 
资源文件 — 所引用的程序集
 Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);
 
子文件夹中的资源文件 — 所引用的程序集
 Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);
 
内容文件
 Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);
 
子文件夹中的内容文件
 Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);


[解决办法]
先在App.xaml后台代码中定义一个对象:

  Grid rootGrid = new Grid();

  同时在App.xaml后台代码中新增一个方法:

/// <summary>
/// 页面跳转
/// </summary>
/// <param name="usercontrol"></param>
public static void RedirectTo(UserControl usercontrol)
{
App app = (App)Application.Current;
app.rootGrid.Children.Clear();
app.rootGrid.Children.Add(usercontrol);
}

然后将App.xaml中的以下方法修改为如下代码:

 private void Application_Startup(object sender, StartupEventArgs e)

this.RootVisual = rootGrid;
rootGrid.Children.Add(new MainPage());
}

在以后的Xaml页面的跳转Button响应事件中,直接通过以下方式处理:
App.RedirectTo(new MyXXXaml());

这样直接引用类,就不用考虑路径了。

热点排行