0

所以,问题是这样的:

我在解决方案资源管理器中创建了一个名为 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 时,只留下文本,应用程序不再崩溃。那么,如何构建这些图像,以及以后如何检索它们?

4

1 回答 1

-1

将所有图像放入 ClientBin 文件夹(位于 project_name.Web 文件夹下),然后像下面这样引用它们,它会起作用。

  <vm:ItemViewModel PageName="page1"  ImageUri="image1.png"/>
于 2013-06-17T11:10:49.323 回答