所以,问题是这样的:
我在解决方案资源管理器中创建了一个名为 Images 的文件夹,并添加了一些 .png,因此文件结构看起来很像这样:/MyProject/Images/image.png。在文件属性中,构建操作设置为内容,复制到输出设置为始终复制。
我正在尝试显示这样的图像:
<Image Source="{Binding ImageUri}" Height="*" Width="*"/>
当我试图在长列表选择器中显示图像时,我为设计师制作了一个示例数据:
<vm:MainViewModel.Items>
<vm:ItemViewModel PageName="page1" ImageUri="/Images/image1.png"/>
<vm:ItemViewModel PageName="page2" ImageUri="/Images/image2.png"/>
</vm:MainViewModel.Items>
在 XAML 设计器中,一切正常。该列表完全按照我想要的方式显示 - 图像和旁边的文本。
在代码中,我添加这样的图像:
this.Items.Add(new ItemViewModel() { PageName = "page1", ImageUri = new Uri(@"/Images/image1.png", UriKind.RelativeOrAbsolute) });
但是,当我尝试在设备上启动应用程序时。我遇到了以下异常:
Error HRESULT E_FAIL has been returned from a call to a COM component.
并遵循堆栈跟踪:
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.UIElement_Measure(UIElement element, Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at Microsoft.Phone.Controls.LongListSelector.RealizeDisplayItem(Iterator`1 iterator, RealizeOptions options)
at Microsoft.Phone.Controls.LongListSelector.RealizedRange.Append(RealizedRange nextRange, Double bottom)
at Microsoft.Phone.Controls.LongListSelector.AppendElement(RealizedRange range, RealizedRange nextRange, Double bottom)
at Microsoft.Phone.Controls.LongListSelector.HealElements(Rect requireRect, Rect allowRect, Boolean& areBoundsUpdated)
at Microsoft.Phone.Controls.LongListSelector.Balance()
at Microsoft.Phone.Controls.LongListSelector.MeasureOverride(Size availableSize)
at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Double inWidth, Double inHeight, Double& outWidth, Double& outHeight)
当然,当我在 XAML 中注释掉 Image 时,只留下文本,应用程序不再崩溃。那么,如何构建这些图像,以及以后如何检索它们?