UWP Изображение не обновляется / перезагружается - PullRequest
0 голосов
/ 14 февраля 2019

Я знаю, что есть много вопросов, похожих на этот вопрос в SO, но ни один до сих пор не устранил проблему и не показал решение, которое работает.

В приложении UWP у меня есть Image (внутриViewBox) Источник которого изменяется пользователем, выбирающим новое изображение.Я подтвердил, что в коде нет никаких исключений, и все в приведенном ниже случае переключения отлично работает.Я попытался использовать InvalidateArrange(), InvalidateMeasure() и UpdateLayout() на изображении и UpdateLayout() на ViewBox, но, похоже, ничего не работает.Исходное изображение удаляется при выполнении кода, но новое изображение не отображается, оно просто показывает пустое пространство.

Может кто-нибудь, пожалуйста, просмотрите код ниже и посмотрите, сможете ли вы найти проблему?Я уверен, что это что-то простое, я упускаю из виду, я просто не могу найти, что это такое.

C # код

private async void ChangeIcon(int selection)
{
    try
    {
        switch (selection)
        {
            case 0:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/ftpRed.png"));
                break;
            case 1:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/ftpOrange.png"));
                break;
            case 2:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/ftpYellow.png"));
                break;
            case 3:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/ftpGreen.png"));
                break;
            case 4:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/ftpBlue.png"));
                break;
            case 5:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/ftpPurple.png"));
                break;
            case 6:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/tpPink.png"));
                break;
            case 7:
                imageEntry.Source = new BitmapImage(new Uri("ms-appx:///FtpSharp/Assets/ftpTeal.png"));
                break;
        }
    }
    catch (Exception ex)
    {
        ContentDialog dialog = new ContentDialog
        {
            Title = "Exception found!",
            Content = ex.ToString(),
            CloseButtonText = "Understood"
        };
        await dialog.ShowAsync();
    }           
}

ViewBox / изображение XAML

<Viewbox Grid.Column="2" Grid.Row="0" Grid.RowSpan="4" Margin="5,15,5,0">
    <Image x:Name="imageEntry" Source="Assets/SquircleX.png" Tapped="ImageEntry_TappedAsync" />
</Viewbox>

1 Ответ

0 голосов
/ 15 февраля 2019

Проблема в используемом вами URI - удалите часть FtpSharp, например:

ms-appx:///Assets/ftpRed.png

Причина в том, что ms-apps:/// уже указывает на корень установочной папки вашегоприложение, поэтому папка Assets будет развернута прямо там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...