Export (0) Print
Expand All

PackUriHelper.Create Method (Uri, Uri)

Creates a pack URI given a Package URI and the URI of a part in the package.

Namespace:  System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)

'Declaration
Public Shared Function Create ( _
	packageUri As Uri, _
	partUri As Uri _
) As Uri

Parameters

packageUri
Type: System.Uri

The URI of the Package.

partUri
Type: System.Uri

The URI of the PackagePart in the package.

Return Value

Type: System.Uri
The pack URI of the given PackagePart.

ExceptionCondition
ArgumentNullException

packageUri is Nothing.

ArgumentException

packageUri is not an absolute URI.

-or-

partUri is not a valid part URI syntax.

packageUri may not be specified as null or empty.

If partUri is Nothing, the returned pack URI points to the package.

The following table illustrates sample cases for the Create method.

 packageUri

 partUri

 Returned pack URI

 http://www.proseware.com/mypackage.pkg 

 /page2.xaml 

 pack://http:,,www.proseware.com,mypackage.pkg/page2.xaml 

 http://www.proseware.com/mypackage.pkg 

 /a/page4.xaml 

 pack://http:,,www.proseware.com,mypackage.pkg/a/page4.xaml 

 http://www.proseware.com/mypackage.pkg 

 /%41/%61.xml 

 pack://http:,,www.proseware.com,mypackage.pkg/A/a.xml 

 http://www.proseware.com/mypackage.pkg 

 /%25XY.xml 

 pack://http:,,www.proseware.com,mypackage.pkg/%25XY.xml 

 http://www.proseware.com/mypackage.pkg 

 null 

 pack://http:,,www.proseware.com,mypackage.pkg 

 ftp://ftp.proseware.com/packages/mypackage1.abc 

 /a/mydoc.xaml 

 pack://ftp:,,ftp.proseware.com,packages,mypackage1.abc/a/mydoc.xaml 

 file:///d:/packages/mypackage2.pkg 

 /a/bar.xaml 

 pack://file:,,,d:,packages,mypackage2.pkg/a/bar.xaml 

Composing a pack URI is a multi-step process. For example, one step in forming a pack URI is to replace the forward slash (/) characters of the packageUri with commas (,).

For more information on string conversion and how pack URIs are formed, see Appendix A.4 "String Conversion Examples" and Appendix B.3 "Composing a Pack URI" in the Open Packaging Conventions specification available for download at Specifications and License Downloads.

The following example shows how to use the Create(Uri) method to define a pack URI that references a package.

		' ------------------------ GetFixedDocument --------------------------
		''' <summary>
		'''   Returns the fixed document at a given URI within
		'''   the currently open XPS package.</summary>
		''' <param name="fixedDocUri">
		'''   The URI of the fixed document to return.</param>
		''' <returns>
		'''   The fixed document at a given URI
		'''   within the current XPS package.</returns>
		Private Function GetFixedDocument(ByVal fixedDocUri As Uri) As FixedDocument
			Dim fixedDocument As FixedDocument = Nothing

			' Create the URI for the fixed document within the package. The URI
			' is used to set the Parser context so fonts & other items can load.
			Dim tempUri As New Uri(_xpsDocumentPath, UriKind.RelativeOrAbsolute)
			Dim parserContext As New ParserContext()
			parserContext.BaseUri = PackUriHelper.Create(tempUri)

			' Retreive the fixed document.
			Dim fixedDocPart As PackagePart = _xpsPackage.GetPart(fixedDocUri)
			If fixedDocPart IsNot Nothing Then
				Dim fixedObject As Object = XamlReader.Load(fixedDocPart.GetStream(), parserContext)
				If fixedObject IsNot Nothing Then
					fixedDocument = TryCast(fixedObject, FixedDocument)
				End If
			End If

			Return fixedDocument
		End Function ' end:GetFixedDocument()

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Show:
© 2015 Microsoft