我知道在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 / Image 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>
答案 0 :(得分:4)
问题出在您正在使用的URI中-删除FtpSharp
部分,例如:
ms-appx:///Assets/ftpRed.png
原因是ms-apps:///
已经指向应用程序安装文件夹的根目录,因此Assets
文件夹将直接部署在该目录中。