web-dev-qa-db-ja.com

UWPアプリを作成するときにC#でimage.sourceを変更するにはどうすればよいですか?

私は最初のWindows10UWPアプリを開発しています。画像があります。これはそのXAMLコードです:

<Image x:Name="image" 
               HorizontalAlignment="Left"
               Height="50" 
               Margin="280,0,0,25" 
               VerticalAlignment="Bottom" 
               Width="50" 
               Source="Assets/Five.png"/>

そして、このコードでimage.sourceを変更しようとしています:

        private void slider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
    {
        BitmapImage One = new BitmapImage(new Uri(@"Assets/One.png"));
        BitmapImage Two = new BitmapImage(new Uri(@"Assets/Two.png"));
        BitmapImage Three = new BitmapImage(new Uri(@"Assets/Three.png"));
        BitmapImage Four = new BitmapImage(new Uri(@"Assets/Four.png"));
        BitmapImage Five = new BitmapImage(new Uri(@"Assets/Five.png"));

        if (slider.Value == 1)
        {
            image.Source = One;
        }
        else if (slider.Value == 2)
        {
            image.Source = Two;
        }
        else if (slider.Value == 3)
        {
            image.Source = Three;
        }
        else if (slider.Value == 4)
        {
            image.Source = Four;
        }
        else if (slider.Value == 5)
        {
            image.Source = Five;
        }
    }

しかし、コードをコンパイルすると、変数宣言を指す次のエラーが発生します。

UriFormatExceptionはユーザーコードによって処理されませんでした

8
Sam Williamson

WindowsランタイムAPIはタイプUriKind.RelativeのURIをサポートしていないため、通常はUriKindを推測する署名を使用しますそして、スキームと権限を含む有効な絶対URIを指定したことを確認してください。

アプリケーションパッケージ内に保存されているファイルにアクセスするには、ルート権限が推測されないコードから、次のようにms-appx:スキームを指定します。

BitmapImage One = new BitmapImage(new Uri("ms-appx:///Assets/One.png"));

詳細については、 ファイルリソース(XAML)のロード方法 および RIスキーム を参照してください。

7
ZORRO

URIオブジェクトごとに追加のUriKindパラメーターを指定して、相対的なものとして定義する必要があります。

new Uri("Assets/One.png", UriKind.Relative)
0
RobertoB