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());
这样直接引用类,就不用考虑路径了。