读书人

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

发布时间: 2012-04-22 18:34:46 作者: rapoo

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

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

读书人网 >CAD教程

热点推荐