Передача URI в среду выполнения WindowsPassing a URI to the Windows Runtime

Методы среды выполнения Windows принимают только абсолютные URI.Windows Runtime methods accept only absolute URIs. Если передать относительный URI в метод среды выполнения Windows, ArgumentException возникает исключение.If you pass a relative URI to a Windows Runtime method, an ArgumentException exception is thrown. Далее описывается, почему это происходит: При использовании среды выполнения Windows в коде .NET Framework, Windows.Foundation.Uri класс отображается как System.Uri в Intellisense.Here's why: When you use the Windows Runtime in .NET Framework code, the Windows.Foundation.Uri class appears as System.Uri in Intellisense. System.Uri Класс допускает относительные URI, но Windows.Foundation.Uri класс — нет.The System.Uri class allows relative URIs, but the Windows.Foundation.Uri class does not. Это также справедливо для методов, предоставляемых в компонентах среды выполнения Windows.This is also true for methods you expose in Windows Runtime Components. Если компонент предоставляет метод, принимающий URI, сигнатура в коде содержит System.Uri.If your component exposes a method that takes a URI, the signature in your code includes System.Uri. Тем не менее, для пользователей вашего компонента сигнатура содержит Windows.Foundation.Uri.However, to users of your component, the signature includes Windows.Foundation.Uri. URI, переданный вашему компоненту, должен быть абсолютным.A URI that is passed to your component must be an absolute URI.

В этом разделе показано, как определить абсолютный URI и как создать его при указании ссылки на ресурс в пакете приложения.This topic shows how to detect an absolute URI and how to create one when referring to a resource in the app package.

Определение и использование абсолютного URIDetecting and using an absolute URI

Используйте Uri.IsAbsoluteUri свойство, чтобы убедиться, что URI является абсолютным, перед его передачей в среду выполнения Windows.Use the Uri.IsAbsoluteUri property to ensure that a URI is absolute before passing it to the Windows Runtime. Такой подход более эффективен, чем перехват и обработка исключения ArgumentException.Using this property is more efficient than catching and handling the ArgumentException exception.

Использование абсолютного URI для ресурса в пакете приложенияUsing an absolute URI for a resource in the app package

Чтобы указать URI для ресурса в пакете приложения, можно использовать схему ms-appx или ms-appx-web для создания абсолютного URI.If you want to specify a URI for a resource that your app package contains, you can use the ms-appx or ms-appx-web scheme to create an absolute URI.

В следующем примере показано, как задать Source свойство для WebView управления и Source свойство для Image управления ресурсами, которые содержатся в папке с именем страниц с помощью XAML и кода.The following example shows how to set the Source property for a WebView control and the Source property for an Image control to resources that are contained in a folder named Pages, using both XAML and code.

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <WebView Name="webview1" HorizontalAlignment="Center" Height="222"  
             VerticalAlignment="Top" Width="310" Margin="472,57,553,0"
             Source="ms-appx-web:///Pages/HTMLPage1.html"/>
    <Button Content="Button" HorizontalAlignment="Left" Margin="322,185,0,0" 
            VerticalAlignment="Top" Click="Button_Click_1"/>
<Image HorizontalAlignment="Left" Height="100" Margin="208,123,0,0" VerticalAlignment="Top" 
           Width="100" Source="ms-appx:///Pages/weather.jpg" />

</Grid>
private void Button_Click_1(object sender, RoutedEventArgs e)
{
    webview1.Source = new Uri("ms-appx-web:///Pages/HTMLPage2.html", UriKind.Absolute);
}
Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
    webview1.Source = New Uri("ms-appx-web:///Pages/HTMLPage2.html", UriKind.Absolute)
End Sub

Дополнительные сведения об этих схемах см. в разделе схем URI в центре разработки для Windows.For more information about these schemes, see URI schemes in the Windows Dev Center.

См. такжеSee also